conduit/lib/l10n/app_fr.arb
cogwheel 4e73c9a0ea
Some checks are pending
L10n / l10n (push) Waiting to run
Fix ten reported issues and vendor Hermes Agent as an API reference (#725)
* Fix ten reported issues and vendor Hermes Agent as an API reference

Closes #693, #695, #699, #700, #701, #703, #708, #712, #716, #723.

- Hermes (#693, #699): load transcripts over REST even when session.resume
  fails, page at 200 messages and shrink on oversized responses, and show
  distinct errors for too-large, not-found, and RPC failures. Add the
  hermes-src submodule (NousResearch/hermes-agent v2026.9.11) as the RPC and
  REST contract reference.
- Server version banner (#695): dismissible, remembered per server and version.
- Model selector (#700): overflow fade and selection tint use the card surface.
- OpenRouter (#701): skip Batch API-only ":batch" model variants.
- Persisted chat content (#703): store plain output text instead of rendered
  <details> markup when structured output exists, matching the web client.
- Direct connections (#708): probes report their real failure instead of a
  generic message, the Open WebUI logout fence no longer blocks Direct setup,
  and 401/403 under the api-key header mode hints at Bearer auth.
- Reasoning effort (#712): per-server, per-model user picks override the
  model's configured default and are sent explicitly in the request.
- Voice calls (#716): stop the record plugin from clearing the Android
  communication device and verify the loudspeaker route before reporting it.
- Voice mode (#723): finalize speech on the responseDone marker.
- Add the five new strings to every locale.

* Address review: keep incomplete-clear block, pass effort on sends, keep all dismissals

- Direct profiles stay hidden and unusable after an incomplete full app-data
  clear, in memory and across restarts, until the logout fence is cleared by a
  completed cleanup or a new authenticated session. Ordinary failed sign-outs
  still do not block Direct setup.
- The primary Open WebUI send path now passes the resolved per-model reasoning
  effort like regeneration and queued completions already did.
- Server version warning dismissals are stored as a bounded set so dismissing
  one server no longer forgets another.

* Address review: release rejected speaker device, speak settled text on responseDone

- When Android accepts the built-in speaker but the read-back disagrees,
  clear that selection before the legacy setSpeakerphoneOn fallback, which is
  ignored while a communication device stays selected.
- Voice mode takes the final text from the message once responseDone is set;
  the streaming content provider can lag behind the flushed message.

* Address review: await the incomplete-clear restart marker before returning

The marker is written through the app-data-clear barrier with a checked write
and awaited by the clear coordinator, so a process death right after an
incomplete clear cannot reload the surviving Direct profiles on restart.

* Address review: arm the restart fence before the wipe and propagate marker failures

The incomplete-clear marker is now armed before any data is wiped, disarmed
only when the clear completes or yields ownership, re-asserted on an
incomplete outcome, and a failed checked write aborts the clear instead of
being swallowed. The in-memory block is unchanged.

* Do not raise an error banner for response.incomplete

Open WebUI forwards the provider's `response.incomplete` event over the
socket but treats it as a no-op: the output is kept and the turn still ends
with a normal `done`. Raising an error on that event flashed "The response
stopped before it was complete" under the answer until `done` cleared it.
`response.failed` still surfaces the provider error.
2026-09-15 00:48:03 +05:30

3269 lines
150 KiB
Text
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.

{
"@@locale": "fr",
"appTitle": "Conduit",
"serverIncompatibleTitle": "Serveur non pris en charge",
"serverIncompatibleMessage": "Ce serveur exécute Open WebUI {serverVersion}, une version plus récente que celle prise en charge par cette application (jusqu'à {maxVersion}).",
"serverIncompatibleResolution": "Pour continuer, rétrogradez votre serveur vers la version {maxVersion} ou une version antérieure, ou attendez une mise à jour de l'application qui ajoute la prise en charge.",
"serverIncompatibleConnectBlocked": "Ce serveur est plus récent que ce que cette application prend en charge (jusqu'à {maxVersion}).",
"serverIncompatibleRecheck": "Revérifier le serveur",
"serverIncompatibleSwitchServer": "Utiliser un autre serveur",
"serverIncompatibleStillUnsupported": "Ce serveur est toujours plus récent que ce que cette application prend en charge.",
"retry": "Réessayer",
"back": "Retour",
"you": "Vous",
"loadingProfile": "Chargement du profil...",
"unableToLoadProfile": "Impossible de charger le profil.",
"pleaseCheckConnection": "Veuillez vérifier votre connexion et réessayer",
"connectionIssueTitle": "Impossible d'atteindre votre serveur",
"@connectionIssueTitle": {
"description": "Titre affiché lorsque le serveur configuré est injoignable"
},
"connectionIssueSubtitle": "Reconnectez-vous pour continuer ou déconnectez-vous pour choisir un autre serveur.",
"@connectionIssueSubtitle": {
"description": "Sous-titre expliquant les actions possibles quand le serveur est injoignable"
},
"account": "Compte",
"supportConduit": "Soutenir Conduit",
"supportConduitSubtitle": "Financez le développement continu et les nouvelles fonctionnalités.",
"githubSponsorsTitle": "GitHub Sponsors",
"githubSponsorsSubtitle": "Devenez sponsor récurrent pour soutenir la feuille de route.",
"buyMeACoffeeTitle": "Buy Me a Coffee",
"buyMeACoffeeSubtitle": "Faites un don ponctuel pour nous encourager.",
"releaseNotesTitle": "Nouveautés",
"releaseNotesAnnouncementTitle": "Nouveautés de {version}",
"@releaseNotesAnnouncementTitle": {"placeholders": {"version": {"type": "String"}}},
"releaseNotesLearnMore": "En savoir plus",
"releaseNotesReviewButton": "Noter Conduit",
"releaseNotesDoneButton": "Terminé",
"signOut": "Se déconnecter",
"endYourSession": "Terminer votre session",
"signOutOptionsDescription": "La déconnexion efface de cet appareil les préférences de l’application ainsi que les connexions Direct et Hermes. Les conversations enregistrées et les données du serveur ne sont pas affectées.",
"keepServerDetails": "Conserver les détails du serveur",
"keepServerDetailsDescription": "Adresse du serveur et paramètres de connexion non sensibles ; les jetons et en-têtes Cookie sont supprimés",
"defaultModel": "Modèle par défaut",
"autoSelect": "Fourni par le serveur",
"loadingModels": "Chargement des modèles...",
"failedToLoadModels": "Échec du chargement des modèles",
"failedToLoadFiles": "Échec du chargement des fichiers",
"availableModels": "Modèles disponibles",
"noResults": "Aucun résultat",
"searchModels": "Rechercher des modèles...",
"searchFiles": "Rechercher des fichiers...",
"errorMessage": "Une erreur s'est produite. Veuillez réessayer.",
"closeButtonSemantic": "Fermer",
"loadingContent": "Chargement du contenu",
"noItems": "Aucun élément",
"noItemsToDisplay": "Aucun élément à afficher",
"knowledgeBase": "Base de connaissances",
"attachments": "Pièces jointes",
"files": "Fichiers",
"takePhoto": "Prendre une photo",
"document": "Document",
"backToServerSetup": "Retour à la configuration du serveur",
"connectedToServer": "Connecté au serveur",
"signIn": "Se connecter",
"enterCredentials": "Entrez vos identifiants pour accéder à vos conversations IA",
"credentials": "Identifiants",
"apiKey": "Clé API",
"token": "Jeton",
"jwt": "JWT",
"usernameOrEmail": "Nom d'utilisateur ou e‑mail",
"password": "Mot de passe",
"signInWithToken": "Se connecter avec un jeton",
"connectToServer": "Se connecter au serveur",
"serverUrl": "URL du serveur",
"serverUrlHint": "https://votre-serveur.com",
"enterServerUrlSemantic": "Saisissez l'URL ou l'adresse IP de votre serveur",
"headerName": "Nom de l'en-tête",
"headerValue": "Valeur de l'en-tête",
"headerValueHint": "api-key-123 ou jeton Bearer",
"addHeader": "Ajouter l'en-tête",
"maximumHeadersReached": "Nombre maximal atteint",
"removeHeader": "Supprimer l'en-tête",
"connecting": "Connexion en cours...",
"connectToServerButton": "Se connecter au serveur",
"demoModeActive": "Mode démo activé",
"skipServerSetupTryDemo": "Ignorer la configuration et essayer la démo",
"enterDemo": "Entrer en démo",
"demoBadge": "Démo",
"serverNotOpenWebUI": "Ceci ne semble pas être un serveur Open-WebUI.",
"serverUrlEmpty": "L'URL du serveur ne peut pas être vide",
"invalidUrlFormat": "Format d'URL invalide. Veuillez vérifier votre saisie.",
"onlyHttpHttps": "Seuls les protocoles HTTP et HTTPS sont pris en charge.",
"serverAddressRequired": "Adresse du serveur requise (ex. 192.168.1.10 ou example.com).",
"portRange": "Le port doit être compris entre 1 et 65535.",
"invalidIpFormat": "Format d'IP invalide. Exemple : 192.168.1.10.",
"couldNotConnectGeneric": "Connexion impossible. Vérifiez l'adresse et réessayez.",
"weCouldntReachServer": "Impossible d'atteindre le serveur. Vérifiez la connexion et l'état du serveur.",
"connectionTimedOut": "Délai d'attente dépassé. Le serveur est peut-être occupé ou bloqué.",
"useHttpOrHttpsOnly": "Utilisez uniquement http:// ou https://.",
"loginFailed": "Échec de la connexion",
"invalidCredentials": "Nom d'utilisateur ou mot de passe invalide. Réessayez.",
"serverRedirectingHttps": "Le serveur redirige les requêtes. Vérifiez la configuration HTTPS.",
"unableToConnectServer": "Impossible de se connecter au serveur. Vérifiez votre connexion.",
"requestTimedOut": "Délai d'attente dépassé. Réessayez.",
"genericSignInFailed": "Connexion impossible. Vérifiez vos identifiants et le serveur.",
"attachmentLabel": "Pièce jointe",
"tools": "Outils",
"toolServer": "Serveur d'outils",
"toolServers": "Serveurs d'outils",
"terminal": "Terminal",
"filters": "Filtres",
"voiceInput": "Entrée vocale",
"voice": "Voix",
"voiceStatusListening": "Écoute…",
"voiceStatusRecording": "Enregistrement…",
"voiceHoldToTalk": "Maintenir pour parler",
"voiceAutoSend": "Envoi automatique",
"voiceTranscript": "Transcription",
"voicePromptSpeakNow": "Parlez maintenant…",
"voicePromptTapStart": "Appuyez sur \"Démarrer\" pour commencer",
"voiceActionStop": "Arrêter",
"voiceActionStart": "Démarrer",
"messageHintText": "Demander à Conduit",
"stopGenerating": "Arrêter la génération",
"codeCopiedToClipboard": "Code copié dans le presse-papiers.",
"send": "Envoyer",
"sendMessage": "Envoyer le message",
"file": "Fichier",
"photo": "Photo",
"camera": "Appareil photo",
"pasteImage": "Coller l'image",
"apiUnavailable": "Service API indisponible",
"unableToLoadImage": "Impossible de charger l'image",
"notAnImageFile": "Ce n'est pas un fichier image : {fileName}",
"failedToLoadImage": "Échec du chargement de l'image : {error}",
"invalidDataUrl": "Format d'URL de données invalide",
"failedToDecodeImage": "Échec du décodage de l'image",
"invalidImageFormat": "Format d'image invalide",
"emptyImageData": "Données d'image vides",
"confirm": "Confirmer",
"cancel": "Annuler",
"chatQueuedOfflineTitle": "En file d'attente hors ligne",
"chatQueuedOfflineMessage": "Cette réponse démarrera lorsque le serveur sera joignable.",
"chatQueuedPendingTitle": "En file d'attente pour l'envoi",
"chatQueuedPendingMessage": "Conduit démarrera cette réponse dès que la synchronisation s'exécutera.",
"chatQueuedFailedTitle": "Échec de l'envoi",
"chatQueuedFailedMessage": "Réessayez la réponse en file d'attente ou annulez-la.",
"chatQueuedSnackBar": "Message mis en file d'attente. Il sera envoyé lorsque le serveur sera joignable.",
"ok": "OK",
"inputField": "Champ de saisie",
"checkConnection": "Vérifier la connexion",
"openSettings": "Ouvrir les réglages",
"goBack": "Retour",
"technicalDetails": "Détails techniques",
"save": "Enregistrer",
"chooseModel": "Choisir le modèle",
"reviewerMode": "MODE DE RÉVISION",
"selectLanguage": "Sélectionner la langue",
"newFolder": "Nouveau dossier",
"folderName": "Nom du dossier",
"newChat": "Nouveau chat",
"more": "Plus",
"clear": "Effacer",
"searchConversations": "Rechercher des conversations...",
"create": "Créer",
"failedToCreateFolder": "Échec de la création du dossier",
"failedToMoveChat": "Échec du déplacement du chat",
"failedToLoadChats": "Échec du chargement des chats",
"failedToUpdatePin": "Échec de la mise à jour de l'épingle",
"failedToDeleteChat": "Échec de la suppression du chat",
"manage": "Gérer",
"rename": "Renommer",
"delete": "Supprimer",
"renameChat": "Renommer le chat",
"enterChatName": "Saisir le nom du chat",
"failedToRenameChat": "Échec du renommage du chat",
"failedToUpdateArchive": "Échec de la mise à jour de l'archive",
"unarchive": "Désarchiver",
"archive": "Archiver",
"pin": "Épingler",
"unpin": "Détacher",
"recent": "Récent",
"system": "Système",
"english": "Anglais",
"deutsch": "Allemand",
"francais": "Français",
"italiano": "Italien",
"espanol": "Espagnol",
"nederlands": "Néerlandais",
"russian": "Russe",
"chinese": "Chinois",
"chineseSimplified": "Chinois (simplifié)",
"chineseTraditional": "Chinois (traditionnel)",
"korean": "Coréen",
"japanese": "日本語",
"czech": "Čeština",
"slovak": "Slovenčina",
"polish": "Polonais",
"deleteMessagesTitle": "Supprimer les messages",
"deleteMessagesMessage": "Supprimer {count} messages ?",
"@deleteMessagesMessage": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"routeNotFound": "Route introuvable : {routeName}",
"@routeNotFound": {
"placeholders": {
"routeName": {
"type": "String"
}
}
},
"deleteChatTitle": "Supprimer le chat",
"deleteChatMessage": "Ce chat sera supprimé définitivement.",
"deleteFolderTitle": "Supprimer le dossier",
"deleteFolderMessage": "Ce dossier et ses associations seront supprimés.",
"failedToDeleteFolder": "Échec de la suppression du dossier",
"aboutApp": "À propos",
"aboutAppSubtitle": "Informations et liens Conduit",
"web": "Web",
"imageGen": "Gén. image",
"pinned": "Épinglé",
"folders": "Dossiers",
"archived": "Archivé",
"appLanguage": "Langue de l'app",
"darkMode": "Mode sombre",
"webSearch": "Recherche Web",
"webSearchDescription": "Recherchez sur le web et citez les sources.",
"imageGeneration": "Génération d'images",
"imageGenerationDescription": "Créez des images à partir de vos prompts.",
"copy": "Copier",
"ttsListen": "Écouter",
"ttsStop": "Arrêter",
"edit": "Modifier",
"regenerate": "Régénérer",
"noConversationsYet": "Aucune conversation pour l'instant",
"usernameOrEmailHint": "Entrez votre nom d'utilisateur ou e‑mail",
"passwordHint": "Entrez votre mot de passe",
"enterToken": "Entrez votre jeton JWT",
"tokenHint": "Obtenez le jeton JWT dans les paramètres d'Open WebUI. Les clés API (sk-...) ne sont pas prises en charge pour le streaming.",
"apiKeyNotSupported": "Les clés API (sk-...) ne sont pas prises en charge. Veuillez utiliser un jeton JWT à la place.",
"apiKeyNoLongerSupported": "Vous avez été déconnecté car les clés API ne sont plus prises en charge. Veuillez vous connecter avec un jeton JWT depuis les paramètres d'Open WebUI.",
"tokenTooShort": "Le jeton est trop court",
"signingIn": "Connexion en cours...",
"advancedSettings": "Paramètres avancés",
"customHeaders": "En-têtes personnalisés",
"customHeadersDescription": "Ajoutez des en-têtes HTTP personnalisés pour l'authentification, les clés API ou des exigences spécifiques du serveur.",
"allowSelfSignedCertificates": "Faire confiance aux certificats auto-signés",
"@allowSelfSignedCertificates": {
"description": "Libellé du commutateur permettant d'autoriser les certificats TLS auto-signés pour le serveur configuré."
},
"allowSelfSignedCertificatesDescription": "Acceptez le certificat TLS de ce serveur même s'il est auto-signé. Activez cette option uniquement pour les serveurs auxquels vous faites confiance.",
"@allowSelfSignedCertificatesDescription": {
"description": "Texte d'aide expliquant les risques liés à l'activation de l'option de certificat auto-signé."
},
"mutualTlsSectionTitle": "Certificat client mTLS",
"mutualTlsSectionDescription": "Ajoutez une chaîne de certificats PEM et une clé privée PEM lorsque votre serveur exige une authentification TLS mutuelle lors de l'établissement de la connexion.",
"mutualTlsSelectCertificate": "Sélectionner le certificat",
"mutualTlsSelectPrivateKey": "Sélectionner la clé privée",
"mutualTlsCertificateReady": "Certificat",
"mutualTlsPrivateKeyReady": "Clé privée",
"mutualTlsPrivateKeyPasswordHint": "Mot de passe de la clé privée (facultatif)",
"mutualTlsClearCredentials": "Effacer les fichiers mTLS",
"mutualTlsMissingCredentialPair": "Sélectionnez à la fois un certificat client et une clé privée pour utiliser mTLS.",
"mutualTlsCertificatePemRequired": "Le fichier de certificat sélectionné doit contenir une chaîne de certificats PEM.",
"mutualTlsPrivateKeyPemRequired": "Le fichier de clé privée sélectionné doit contenir une clé privée PEM.",
"mutualTlsFileReadFailed": "Impossible de lire le fichier mTLS sélectionné.",
"mutualTlsHandshakeFailed": "Le serveur a rejeté les identifiants mTLS. Vérifiez que le certificat, la clé privée et le mot de passe sont corrects.",
"headerNameTooLong": "Nom d'en-tête trop long (max 64 caractères)",
"headerNameInvalidChars": "Nom d'en-tête invalide. Utilisez uniquement des lettres, des chiffres et ces symboles : !#$&-^_`|~",
"headerNameReserved": "Impossible d'écraser l'en-tête réservé « {key} »",
"@headerNameReserved": {
"placeholders": {
"key": {
"type": "String"
}
}
},
"headerValueTooLong": "Valeur d'en-tête trop longue (max 1024 caractères)",
"headerValueInvalidChars": "La valeur de l'en-tête contient des caractères invalides. Utilisez uniquement des caractères ASCII imprimables.",
"headerValueUnsafe": "La valeur de l'en-tête semble contenir du contenu potentiellement dangereux",
"headerAlreadyExists": "L'en-tête « {key} » existe déjà. Supprimez-le d'abord pour le modifier.",
"@headerAlreadyExists": {
"placeholders": {
"key": {
"type": "String"
}
}
},
"maxHeadersReachedDetail": "Maximum 10 en-têtes personnalisés. Supprimez-en pour en ajouter.",
"noModelsAvailable": "Aucun modèle disponible",
"followingSystem": "Selon le système : {theme}",
"@followingSystem": {
"placeholders": {
"theme": {
"type": "String"
}
}
},
"themeDark": "Sombre",
"themePalette": "Palette de couleurs",
"@themePalette": {
"description": "Titre pour choisir la palette de couleurs de l'application."
},
"themeLight": "Clair",
"currentlyUsingDarkTheme": "Thème sombre actuellement utilisé",
"currentlyUsingLightTheme": "Thème clair actuellement utilisé",
"aboutConduit": "À propos de Conduit",
"versionLabel": "Version : {version} ({build})",
"@versionLabel": {
"placeholders": {
"version": {
"type": "String"
},
"build": {
"type": "String"
}
}
},
"githubRepository": "Dépôt GitHub",
"unableToLoadAppInfo": "Impossible de charger les informations de l'application",
"thinking": "Réflexion…",
"thoughts": "Réflexions",
"thoughtForDuration": "A réfléchi pendant {duration}",
"@thoughtForDuration": {
"description": "Indique la durée de réflexion de l'assistant.",
"placeholders": {
"duration": {
"type": "String",
"example": "3s"
}
}
},
"analyzing": "Analyse…",
"analyzed": "Analysé",
"appCustomization": "Personnalisation",
"appCustomizationSubtitle": "Thème, langue, voix et quick actions",
"quickActionsDescription": "Raccourcis dans le chat",
"chatSettings": "Discussion",
"sendOnEnter": "Envoyer avec Entrée",
"sendOnEnterDescription": "Entrée envoie (clavier logiciel). Cmd/Ctrl+Entrée aussi disponible",
"disableHapticsWhileStreaming": "Désactiver les retours haptiques pendant le streaming",
"disableHapticsWhileStreamingDescription": "Coupe les retours haptiques des réponses en direct sans affecter le reste de l’app",
"androidAssistantTitle": "Assistant numérique Android",
"androidAssistantDescription": "Choisissez ce qui se passe lorsque vous déclenchez l’assistant numérique Android.",
"androidAssistantOverlayOption": "Afficher la superposition rapide (par défaut)",
"androidAssistantNewChatOption": "Ouvrir Conduit avec un nouveau chat",
"androidAssistantVoiceCallOption": "Démarrer un appel vocal",
"sttSettings": "Voix vers texte",
"sttEngineLabel": "Moteur de reconnaissance",
"sttEngineDevice": "Sur l’appareil",
"sttEngineServer": "Serveur",
"sttEngineDeviceDescription": "Conserve l’audio sur cet appareil. L’entrée vocale cesse de fonctionner si la reconnaissance vocale n’est pas prise en charge.",
"sttEngineServerDescription": "Envoie toujours les enregistrements à votre serveur Open WebUI pour transcription.",
"sttDeviceUnavailableWarning": "La reconnaissance vocale sur l’appareil n’est pas disponible sur cet appareil.",
"sttServerUnavailableWarning": "Connectez-vous à un serveur avec la transcription activée pour utiliser cette option.",
"sttSilenceDuration": "Durée du silence",
"sttSilenceDurationDescription": "Temps d'attente après le silence avant d'arrêter automatiquement l'enregistrement",
"sttTranscriptionLanguage": "Langue de transcription",
"sttTranscriptionLanguageDescription": "Utilisez Auto pour suivre la langue de cet appareil, ou saisissez un code comme en.",
"sttTranscriptionLanguageAuto": "Auto",
"sttTranscriptionLanguageCustom": "Code de langue personnalisé",
"sttTranscriptionLanguagePlaceholder": "Code ISO-639-1, p. ex. en",
"sttTranscriptionLanguageInvalid": "Utilisez un code de langue à deux lettres comme en.",
"sttDeviceLanguage": "Langue de reconnaissance",
"sttDeviceLanguageDescription": "Choisissez la langue utilisée pour la reconnaissance sur l’appareil.",
"sttDeviceLanguageAutoDescription": "Basculez automatiquement entre les langues installées lorsque cette fonction est prise en charge.",
"sttDeviceLanguageSystemDescription": "Utilisez la langue système Android actuelle.",
"sttDeviceLanguagePlaceholder": "Code BCP-47, par ex. pl-PL",
"sttDeviceLanguageInvalid": "Saisissez un code de langue valide comme pl-PL.",
"ttsSettings": "Synthèse vocale",
"ttsEngineDeviceDescription": "Garde la synthèse sur cet appareil. La lecture vocale ne fonctionne plus si l’appareil n’offre pas la synthèse vocale.",
"ttsEngineServerDescription": "Demande toujours l'audio à votre serveur Open WebUI.",
"ttsDeviceUnavailableWarning": "La synthèse vocale sur l’appareil n’est pas disponible sur cet appareil.",
"ttsServerUnavailableWarning": "Connectez-vous à un serveur avec la synthèse vocale activée pour utiliser cette option.",
"ttsVoice": "Voix",
"ttsSpeechRate": "Vitesse de parole",
"ttsPitch": "Hauteur",
"ttsVolume": "Volume",
"ttsPreview": "Aperçu de la voix",
"ttsSystemDefault": "Système par défaut",
"ttsSelectVoice": "Sélectionner la voix",
"ttsPreviewText": "Ceci est un aperçu de la voix sélectionnée.",
"ttsNoVoicesAvailable": "Aucune voix disponible",
"ttsVoicesForLanguage": "Voix {language}",
"ttsOtherVoices": "Autres langues",
"error": "Erreur",
"display": "Affichage",
"realtime": "Temps réel",
"transportMode": "Mode de transport",
"mode": "Mode",
"transportModePolling": "Polling de secours",
"transportModeWs": "WebSocket uniquement",
"transportModePollingInfo": "Bascule sur HTTP polling lorsque WebSocket est bloqué. Repasse à WebSocket dès que possible.",
"transportModeWsInfo": "Moins de surcharge, mais peut échouer derrière des proxys/firewalls stricts.",
"quickActionsSelectedCount": "{count, plural, =0{Aucune action sélectionnée} one{{count} action sélectionnée} other{{count} actions sélectionnées}}",
"@quickActionsSelectedCount": {
"description": "Subtitle indicating how many quick actions are selected.",
"placeholders": {
"count": {
"type": "int",
"example": "2"
}
}
},
"autoSelectDescription": "Utiliser le modèle par défaut configuré sur le serveur",
"@autoSelectDescription": {
"description": "Explains what the server-provided model setting does."
},
"ttsEngineLabel": "Moteur",
"@ttsEngineLabel": {
"description": "Label for selecting the text-to-speech engine."
},
"ttsEngineDevice": "Sur l'appareil",
"@ttsEngineDevice": {
"description": "Chip label for using on-device text-to-speech."
},
"ttsEngineServer": "Serveur",
"@ttsEngineServer": {
"description": "Chip label for using server-side text-to-speech."
},
"modelCapabilityMultimodal": "Multimodal",
"@modelCapabilityMultimodal": {
"description": "Capability chip label for models that support multimodal input."
},
"modelCapabilityReasoning": "Raisonnement",
"@modelCapabilityReasoning": {
"description": "Capability chip label for models that support reasoning features."
},
"voiceCallTitle": "Appel vocal",
"@voiceCallTitle": {
"description": "Title displayed on the voice call screen."
},
"voiceCallPause": "Pause",
"@voiceCallPause": {
"description": "Button label to pause a voice call."
},
"voiceCallResume": "Reprendre",
"@voiceCallResume": {
"description": "Button label to resume a paused voice call."
},
"voiceCallStop": "Arrêter",
"@voiceCallStop": {
"description": "Button label to stop the active voice call."
},
"voiceCallEnd": "Terminer l'appel",
"@voiceCallEnd": {
"description": "Button label to end the voice call session."
},
"chooseDifferentFile": "Choisir un autre fichier",
"@chooseDifferentFile": {
"description": "Action label prompting the user to pick another file."
},
"errorWithMessage": "Erreur : {message}",
"@errorWithMessage": {
"description": "Error label with appended message text.",
"placeholders": {
"message": {
"type": "String",
"example": "Network timeout"
}
}
},
"networkTimeoutError": "La connexion a expiré. Vérifiez votre connexion Internet et réessayez.",
"@networkTimeoutError": {
"description": "User-facing message when a network request times out."
},
"networkUnreachableError": "Impossible d'atteindre le serveur. Vérifiez l'URL du serveur et votre connexion Internet.",
"@networkUnreachableError": {
"description": "User-facing message when the server cannot be reached."
},
"networkServerNotResponding": "Le serveur ne répond pas. Vérifiez qu'il est en cours d'exécution et accessible.",
"@networkServerNotResponding": {
"description": "User-facing message when the server does not respond to a request."
},
"networkGenericError": "Problème de connexion réseau. Vérifiez votre connexion Internet.",
"@networkGenericError": {
"description": "Fallback message for generic network errors."
},
"serverError500": "Le serveur rencontre des problèmes. Cela est généralement temporaire.",
"@serverError500": {
"description": "Message when a 500 error is encountered."
},
"serverErrorUnavailable": "Le serveur est temporairement indisponible. Réessayez dans un instant.",
"@serverErrorUnavailable": {
"description": "Message when a 502/503 error is encountered."
},
"serverErrorTimeout": "Le serveur a mis trop de temps à répondre. Réessayez.",
"@serverErrorTimeout": {
"description": "Message when the server times out."
},
"serverErrorGeneric": "Le serveur rencontre des difficultés. Réessayez plus tard.",
"@serverErrorGeneric": {
"description": "Fallback server error message."
},
"authSessionExpired": "Votre session a expiré. Veuillez vous reconnecter.",
"@authSessionExpired": {
"description": "Message when an authentication session expires."
},
"authForbidden": "Vous n'avez pas l'autorisation d'effectuer cette action.",
"@authForbidden": {
"description": "Message when the user lacks required permissions."
},
"authInvalidToken": "Le jeton d'authentification est invalide. Veuillez vous reconnecter.",
"@authInvalidToken": {
"description": "Message when the authentication token is invalid."
},
"authGenericError": "Problème d'authentification. Veuillez vous reconnecter.",
"@authGenericError": {
"description": "Fallback authentication error message."
},
"validationInvalidEmail": "Veuillez saisir une adresse e-mail valide.",
"@validationInvalidEmail": {
"description": "Validation message for invalid email input."
},
"validationWeakPassword": "Le mot de passe ne respecte pas les exigences. Vérifiez-le et réessayez.",
"@validationWeakPassword": {
"description": "Validation message for weak passwords."
},
"validationMissingRequired": "Veuillez remplir tous les champs obligatoires.",
"@validationMissingRequired": {
"description": "Validation message when required fields are missing."
},
"validationFormatError": "Certaines informations sont au mauvais format. Vérifiez-les et réessayez.",
"@validationFormatError": {
"description": "Validation message for generic formatting issues."
},
"validationGenericError": "Veuillez vérifier vos informations et réessayer.",
"@validationGenericError": {
"description": "Fallback validation message."
},
"fileNotFound": "Fichier introuvable. Il a peut-être été déplacé ou supprimé.",
"@fileNotFound": {
"description": "Message when a file cannot be located."
},
"fileAccessDenied": "Impossible d'accéder au fichier. Vérifiez les autorisations.",
"@fileAccessDenied": {
"description": "Message when file access is denied."
},
"fileTooLarge": "Le fichier est trop volumineux. Choisissez un fichier plus petit.",
"@fileTooLarge": {
"description": "Message when a file exceeds size limits."
},
"fileGenericError": "Problème avec le fichier. Essayez un autre fichier.",
"@fileGenericError": {
"description": "Fallback file error message."
},
"permissionCameraRequired": "L'autorisation de la caméra est nécessaire. Activez-la dans les paramètres.",
"@permissionCameraRequired": {
"description": "Message when camera permission is missing."
},
"permissionStorageRequired": "L'autorisation de stockage est nécessaire. Activez-la dans les paramètres.",
"@permissionStorageRequired": {
"description": "Message when storage permission is missing."
},
"permissionMicrophoneRequired": "L'autorisation du microphone est nécessaire. Activez-la dans les paramètres.",
"@permissionMicrophoneRequired": {
"description": "Message when microphone permission is missing."
},
"permissionGenericError": "Autorisation requise. Vérifiez les autorisations de l'application dans les paramètres.",
"@permissionGenericError": {
"description": "Fallback permission error message."
},
"actionRetryRequest": "Réessayez la requête.",
"@actionRetryRequest": {
"description": "Description for retrying a failed request."
},
"actionVerifyConnection": "Vérifiez votre connexion Internet.",
"@actionVerifyConnection": {
"description": "Description for checking internet connectivity."
},
"actionRetryOperation": "Réessayez l'opération.",
"@actionRetryOperation": {
"description": "Description for retrying the same operation."
},
"actionRetryAfterDelay": "Attendez un instant puis réessayez.",
"@actionRetryAfterDelay": {
"description": "Description suggesting a short delay before retrying."
},
"actionSignInToAccount": "Connectez-vous à votre compte.",
"@actionSignInToAccount": {
"description": "Description for signing back into the app."
},
"actionSelectAnotherFile": "Sélectionnez un autre fichier.",
"@actionSelectAnotherFile": {
"description": "Description for choosing a different file."
},
"actionOpenAppSettings": "Ouvrez les paramètres de l'application pour accorder les autorisations.",
"@actionOpenAppSettings": {
"description": "Description for opening system or app settings."
},
"actionRetryAfterPermission": "Réessayez après avoir accordé l'autorisation.",
"@actionRetryAfterPermission": {
"description": "Description for retrying once permissions are granted."
},
"actionReturnToPrevious": "Revenir à l'écran précédent.",
"@actionReturnToPrevious": {
"description": "Description for navigating back to the prior screen."
},
"continueAction": "Continuer",
"@continueAction": {
"description": "Button label to continue an action or flow."
},
"loadingShort": "Chargement",
"@loadingShort": {
"description": "Short loading label used for accessibility."
},
"loadingAnnouncement": "Chargement : {message}",
"@loadingAnnouncement": {
"description": "Screen reader announcement when loading a resource.",
"placeholders": {
"message": {
"type": "String",
"example": "Messages"
}
}
},
"errorAnnouncement": "Erreur : {error}",
"@errorAnnouncement": {
"description": "Screen reader announcement for an error.",
"placeholders": {
"error": {
"type": "String",
"example": "Network timeout"
}
}
},
"errorAnnouncementWithSuggestion": "Erreur : {error}. {suggestion}",
"@errorAnnouncementWithSuggestion": {
"description": "Screen reader announcement for an error with a follow-up suggestion.",
"placeholders": {
"error": {
"type": "String",
"example": "Network timeout"
},
"suggestion": {
"type": "String",
"example": "Please try again later."
}
}
},
"successAnnouncement": "Succès : {message}",
"@successAnnouncement": {
"description": "Screen reader announcement for successful actions.",
"placeholders": {
"message": {
"type": "String",
"example": "Profile updated"
}
}
},
"requiredFieldLabel": "{label} *",
"@requiredFieldLabel": {
"description": "Label text indicating a required field.",
"placeholders": {
"label": {
"type": "String",
"example": "Email"
}
}
},
"requiredFieldHelper": "Champ obligatoire",
"@requiredFieldHelper": {
"description": "Helper text indicating that the field is required."
},
"switchOnLabel": "Activé",
"@switchOnLabel": {
"description": "Semantic label when a switch is enabled."
},
"switchOffLabel": "Désactivé",
"@switchOffLabel": {
"description": "Semantic label when a switch is disabled."
},
"dialogSemanticLabel": "Dialogue : {title}",
"@dialogSemanticLabel": {
"description": "Semantic label describing the dialog title.",
"placeholders": {
"title": {
"type": "String",
"example": "Settings"
}
}
},
"previousLabel": "Précédent",
"@previousLabel": {
"description": "Label for navigating to the previous item."
},
"nextLabel": "Suivant",
"@nextLabel": {
"description": "Label for navigating to the next item."
},
"themePaletteConduitLabel": "Conduit",
"@themePaletteConduitLabel": {
"description": "Palette name for the default Conduit theme."
},
"themePaletteConduitDescription": "Thème neutre et épuré conçu pour Conduit.",
"@themePaletteConduitDescription": {
"description": "Description of the Conduit palette."
},
"themePaletteClaudeLabel": "Claude",
"@themePaletteClaudeLabel": {
"description": "Palette name inspired by the Claude web client."
},
"themePaletteClaudeDescription": "Palette chaleureuse inspirée du client web de Claude.",
"@themePaletteClaudeDescription": {
"description": "Description of the Claude palette."
},
"themePaletteT3ChatLabel": "T3 Chat",
"@themePaletteT3ChatLabel": {
"description": "Palette name inspired by the T3 Stack brand."
},
"themePaletteT3ChatDescription": "Dégradés ludiques inspirés de la marque T3 Stack.",
"@themePaletteT3ChatDescription": {
"description": "Description of the T3 Chat palette."
},
"themePaletteCatppuccinLabel": "Catppuccin",
"@themePaletteCatppuccinLabel": {
"description": "Palette name for Catppuccin colors."
},
"themePaletteCatppuccinDescription": "Palette douce de tons pastel.",
"@themePaletteCatppuccinDescription": {
"description": "Description of the Catppuccin palette."
},
"themePaletteTangerineLabel": "Tangerine",
"@themePaletteTangerineLabel": {
"description": "Palette name for Tangerine colors."
},
"themePaletteTangerineDescription": "Palette chaleureuse d'oranges et d'ardoises.",
"@themePaletteTangerineDescription": {
"description": "Description of the Tangerine palette."
},
"@notAnImageFile": {
"description": "Error when a referenced file is not an image.",
"placeholders": {
"fileName": {
"type": "String",
"example": "image.txt"
}
}
},
"@failedToLoadImage": {
"description": "Error including the underlying reason when image loading fails.",
"placeholders": {
"error": {
"type": "String",
"example": "Network error"
}
}
},
"@ttsVoicesForLanguage": {
"description": "Section header for voices matching the app language",
"placeholders": {
"language": {
"type": "String",
"example": "EN"
}
}
},
"voiceCallReady": "Prêt",
"@voiceCallReady": {
"description": "Status label shown when the voice call is ready to start."
},
"voiceCallConnecting": "Connexion…",
"@voiceCallConnecting": {
"description": "Status label shown while the voice call is connecting."
},
"voiceCallListening": "Écoute",
"@voiceCallListening": {
"description": "Status label shown while the call is listening for input."
},
"voiceCallPaused": "En pause",
"@voiceCallPaused": {
"description": "Status label shown when the call is paused."
},
"voiceCallProcessing": "Réflexion…",
"@voiceCallProcessing": {
"description": "Status label shown while the call processes a response."
},
"voiceCallSpeaking": "Parle",
"@voiceCallSpeaking": {
"description": "Status label shown while the assistant is speaking."
},
"voiceCallDisconnected": "Déconnecté",
"@voiceCallDisconnected": {
"description": "Status label shown when the voice call has ended or disconnected."
},
"voiceCallErrorHelp": "Veuillez vérifier :\n• Les autorisations du microphone sont accordées\n• La reconnaissance vocale est disponible sur votre appareil\n• Vous êtes connecté au serveur",
"@voiceCallErrorHelp": {
"description": "Guidance shown when the voice call encounters an error."
},
"mermaidPreviewUnavailable": "L'aperçu Mermaid n'est pas disponible sur cette plateforme.",
"chartPreviewUnavailable": "L'aperçu des graphiques n'est pas disponible sur cette plateforme.",
"notes": "Notes",
"searchNotes": "Rechercher des notes...",
"createNote": "Créer une note",
"noNotesYet": "Pas encore de notes",
"noNotesFound": "Aucune note trouvée",
"createFirstNoteHint": "Appuyez sur + pour créer votre première note.",
"tryDifferentSearch": "Essayez un autre terme de recherche.",
"loadingNotes": "Chargement des notes...",
"loadingNote": "Chargement de la note...",
"failedToLoadNotes": "Échec du chargement des notes",
"deleteNoteTitle": "Supprimer la note",
"deleteNoteMessage": "Supprimer \"{title}\" ? Cette action est irréversible.",
"@deleteNoteMessage": {
"placeholders": {
"title": {
"type": "String",
"example": "My Note"
}
}
},
"writeNote": "Écrivez quelque chose...",
"saving": "Enregistrement...",
"saved": "Enregistré",
"noteCopiedToClipboard": "Note copiée dans le presse-papiers",
"generateTitle": "Générer un titre",
"generatingTitle": "Génération du titre...",
"noContentToGenerateTitle": "Ajoutez d'abord du contenu pour générer un titre",
"failedToGenerateTitle": "Échec de la génération du titre",
"noContentToEnhance": "Ajoutez d'abord du contenu à améliorer",
"noteEnhanced": "Note améliorée par l'IA",
"failedToEnhanceNote": "Échec de l'amélioration de la note",
"noModelSelected": "Veuillez d'abord sélectionner un modèle",
"enhanceWithAI": "Améliorer avec l'IA",
"enhanceNote": "Améliorer la note",
"startDictation": "Démarrer la dictée",
"stopRecording": "Arrêter l'enregistrement",
"voiceInputUnavailable": "Entrée vocale non disponible",
"failedToStartDictation": "Échec du démarrage de la dictée",
"noteNotFound": "Note introuvable",
"untitled": "Sans titre",
"today": "Aujourd'hui",
"yesterday": "Hier",
"previous7Days": "7 derniers jours",
"previous30Days": "30 derniers jours",
"older": "Plus ancien",
"wordCount": "{count} mots",
"@wordCount": {
"placeholders": {
"count": {
"type": "int",
"example": "150"
}
}
},
"charCount": "{count} caractères",
"@charCount": {
"placeholders": {
"count": {
"type": "int",
"example": "500"
}
}
},
"promptVariablesTitle": "Remplir les détails",
"promptVariablesDescription": "Complétez les champs ci-dessous pour personnaliser ce prompt.",
"promptVariableNumberMin": "La valeur minimale est {min}",
"@promptVariableNumberMin": {
"placeholders": {
"min": {
"type": "double",
"example": "0"
}
}
},
"promptVariableNumberMax": "La valeur maximale est {max}",
"@promptVariableNumberMax": {
"placeholders": {
"max": {
"type": "double",
"example": "100"
}
}
},
"sso": "SSO",
"ssoDescription": "Connectez-vous avec le fournisseur d'identité de votre organisation",
"signInWithSso": "Se connecter avec SSO",
"ssoAuthenticating": "Authentification...",
"ssoAuthFailed": "Échec de l'authentification SSO",
"ssoLoadingLogin": "Chargement de la page de connexion...",
"ldap": "LDAP",
"ldapDescription": "Connectez-vous avec vos identifiants d'annuaire LDAP",
"signInWithLdap": "Se connecter avec LDAP",
"ldapUsername": "Nom d'utilisateur",
"ldapUsernameHint": "Entrez votre nom d'utilisateur LDAP",
"moreSignInOptions": "Plus d'options de connexion",
"ldapNotEnabled": "L'authentification LDAP n'est pas activée sur ce serveur",
"ssoPlatformNotSupported": "L'authentification SSO n'est pas prise en charge sur cette plateforme. Veuillez utiliser les identifiants ou l'authentification LDAP à la place.",
"continueWithProvider": "Continuer avec {provider}",
"or": "ou",
"usageInfo": "Info",
"usageInfoTitle": "Statistiques de réponse",
"usageTokenGeneration": "Génération de tokens",
"usagePromptEval": "Traitement du prompt",
"usageTotalDuration": "Durée totale",
"usageTokensPerSecond": "{speed} t/s",
"@usageTokensPerSecond": {
"placeholders": {
"speed": {
"type": "String",
"example": "45.2"
}
}
},
"usageTokenCount": "{count} tokens",
"@usageTokenCount": {
"placeholders": {
"count": {
"type": "int",
"example": "128"
}
}
},
"usageSecondsFormat": "{seconds}s",
"@usageSecondsFormat": {
"placeholders": {
"seconds": {
"type": "String",
"example": "2.34"
}
}
},
"usageLoadDuration": "Temps de chargement du modèle",
"usageQueueTime": "Temps d'attente",
"usageReasoningTokens": "Tokens de raisonnement",
"usageTotalTokens": "Tokens totaux",
"proxyAuthentication": "Authentification Proxy",
"proxyAuthPlatformNotSupported": "L'authentification proxy nécessite un appareil mobile. Veuillez d'abord vous authentifier via un navigateur.",
"proxyAuthLoading": "Chargement de la page d'authentification...",
"proxyAuthFailed": "Échec de l'authentification proxy",
"proxyAuthHelpText": "Connectez-vous via le proxy de votre organisation, puis connectez-vous à Open WebUI. Vous serez redirigé automatiquement.",
"proxyAuthHelpTextSimple": "Connectez-vous via votre proxy. Une fois authentifié, appuyez sur Continuer pour vous connecter.",
"continueButton": "Continuer",
"proxyAuthRequired": "Ce serveur nécessite une authentification proxy",
"proxyAuthRequiredDescription": "Votre serveur semble être derrière un proxy d'authentification (comme oauth2-proxy). Vous devrez d'abord vous connecter via le proxy.",
"authenticateThroughProxy": "S'authentifier",
"voiceOptions": "Options vocales",
"dictation": "Dictée",
"dictationDescription": "Parlez et convertissez en texte en temps réel",
"recordAudio": "Enregistrer l'audio",
"recordAudioDescription": "Enregistrer l'audio pour transcription ultérieure",
"recordingAudio": "Enregistrement...",
"preparingRecording": "Préparation...",
"recordingHint": "Appuyez sur arrêt quand terminé",
"stopAndSaveRecording": "Arrêter et sauvegarder",
"processingRecording": "Traitement...",
"audioRecordingSaved": "Enregistrement audio sauvegardé",
"microphonePermissionDenied": "Accès au microphone refusé",
"recordingFailed": "Enregistrement échoué",
"removeFileConfirm": "Retirer ce fichier de la note ?",
"fileRemoved": "Fichier retiré",
"playAudio": "Lire l'audio",
"removeFile": "Retirer le fichier",
"audioFileType": "Audio",
"imageFileType": "Image",
"failedToUploadAudio": "Échec du téléchargement audio",
"audioAttachment": "Pièce jointe audio",
"loadingAudio": "Chargement audio...",
"failedToLoadAudio": "Impossible de charger l'audio",
"webPage": "Page Web",
"greetingTitle": "Bonjour, {username}",
"temporaryChat": "Chat temporaire",
"temporaryChatTooltip": "Ce chat n'apparaîtra pas dans l'historique",
"saveChat": "Enregistrer le chat",
"temporaryChatByDefault": "Chat temporaire par défaut",
"temporaryChatByDefaultDescription": "Les nouveaux chats ne seront pas enregistrés dans l'historique sauf si vous choisissez de les enregistrer",
"chatSaved": "Chat enregistré dans l'historique",
"chatSaveFailed": "Échec de l'enregistrement du chat",
"sidebarChatsTab": "Discussions",
"sidebarTerminalTab": "Terminal",
"@sidebarTerminalTab": {
"description": "Label for the Terminal tab in the sidebar"
},
"sidebarNotesTab": "Notes",
"sidebarChannelsTab": "Canaux",
"sidebarResizeHandle": "Redimensionner la barre latérale",
"@sidebarResizeHandle": {"description": "Accessibility label for the draggable tablet sidebar divider."},
"sidebarResizeResetHint": "Touchez deux fois pour réinitialiser sa largeur",
"@sidebarResizeResetHint": {"description": "Accessibility hint for resetting the tablet sidebar width."},
"sidebarWidthValue": "{width} points",
"@sidebarWidthValue": {
"description": "Accessibility value describing the current tablet sidebar width.",
"placeholders": {"width": {"type": "int"}}
},
"closeSidebar": "Fermer la barre latérale",
"terminalSelectServer": "Sélectionner un serveur de terminal",
"@terminalSelectServer": {
"description": "Prompt shown when the user needs to choose a terminal server."
},
"terminalNoServersConfigured": "Aucun serveur de terminal disponible.",
"@terminalNoServersConfigured": {
"description": "Empty state shown when there are no terminal servers configured."
},
"terminalConnectAction": "Se connecter",
"@terminalConnectAction": {
"description": "Button label used to connect to a terminal session."
},
"terminalDisconnectAction": "Se déconnecter",
"@terminalDisconnectAction": {
"description": "Button label used to disconnect from a terminal session."
},
"terminalConnectedStatus": "Connecté",
"@terminalConnectedStatus": {
"description": "Status label shown when the terminal is connected."
},
"terminalDisconnectedStatus": "Déconnecté",
"@terminalDisconnectedStatus": {
"description": "Status label shown when the terminal is disconnected."
},
"terminalConnectingStatus": "Connexion...",
"@terminalConnectingStatus": {
"description": "Status label shown while the terminal connection is being established."
},
"terminalUploadAction": "Téléverser",
"@terminalUploadAction": {
"description": "Action label for uploading a file into the terminal workspace."
},
"terminalOpenInBrowserAction": "Ouvrir dans le navigateur",
"@terminalOpenInBrowserAction": {
"description": "Action label for opening a forwarded port in the browser."
},
"terminalHomeAction": "Dossier personnel",
"@terminalHomeAction": {
"description": "Tooltip for navigating back to the terminal home directory."
},
"terminalCurrentPathLabel": "Chemin actuel",
"@terminalCurrentPathLabel": {
"description": "Label displayed above the current terminal working directory."
},
"terminalPortsSectionLabel": "Ports en écoute",
"@terminalPortsSectionLabel": {
"description": "Section title for ports discovered in the terminal environment."
},
"terminalNoFiles": "Aucun fichier dans ce dossier.",
"@terminalNoFiles": {
"description": "Empty state shown when the current terminal directory has no files."
},
"terminalNoPorts": "Aucun port en écoute détecté.",
"@terminalNoPorts": {
"description": "Empty state shown when the terminal server reports no listening ports."
},
"terminalPreviewUnavailable": "Aperçu indisponible. Utilisez plutôt Télécharger.",
"@terminalPreviewUnavailable": {
"description": "Message shown when a terminal file cannot be previewed inline."
},
"terminalFeatureDisabled": "Ce serveur de terminal ne propose pas de shell interactif.",
"@terminalFeatureDisabled": {
"description": "Message shown when the selected terminal server disables interactive terminal sessions."
},
"terminalFolderNameHint": "Nom du dossier",
"@terminalFolderNameHint": {
"description": "Hint text used when creating a new folder in the terminal workspace."
},
"terminalFailedToLoadFiles": "Impossible de charger les fichiers du terminal.",
"@terminalFailedToLoadFiles": {
"description": "Error message shown when the terminal file list cannot be loaded."
},
"terminalFailedToLoadPorts": "Impossible de charger les ports en écoute.",
"@terminalFailedToLoadPorts": {
"description": "Error message shown when terminal port discovery fails."
},
"terminalFailedToConnect": "Impossible de se connecter au terminal.",
"@terminalFailedToConnect": {
"description": "Error message shown when the terminal websocket session cannot be opened."
},
"terminalDownloadFailed": "Impossible de télécharger le fichier sélectionné.",
"@terminalDownloadFailed": {
"description": "Error message shown when downloading a terminal file fails."
},
"terminalUploadFailed": "Impossible de téléverser le fichier sélectionné.",
"@terminalUploadFailed": {
"description": "Error message shown when uploading a terminal file fails."
},
"terminalRenameFailed": "Impossible de renommer l’élément sélectionné.",
"@terminalRenameFailed": {
"description": "Error message shown when renaming a file or folder in the terminal workspace fails."
},
"terminalDeleteFailed": "Impossible de supprimer l’élément sélectionné.",
"@terminalDeleteFailed": {
"description": "Error message shown when deleting a file or folder in the terminal workspace fails."
},
"terminalFolderCreateFailed": "Impossible de créer le dossier.",
"@terminalFolderCreateFailed": {
"description": "Error message shown when creating a new terminal folder fails."
},
"channelCreateTitle": "Créer un canal",
"channelName": "Nom du canal",
"channelDescription": "Description",
"channelPrivate": "Canal privé",
"channelJoin": "Rejoindre le canal",
"channelLeave": "Quitter le canal",
"channelDelete": "Supprimer le canal",
"channelEdit": "Modifier le canal",
"channelDeleteConfirm": "Supprimer ce canal ? Cette action est irréversible.",
"channelLeaveConfirm": "Quitter ce canal ?",
"channelEmptyState": "Aucun canal pour le moment",
"channelNoMessages": "Aucun message pour le moment. Lancez la conversation !",
"channelMembers": "{count} {count, plural, =1{membre} other{membres}}",
"channelMessageReply": "Répondre",
"channelMessageReact": "Réagir",
"channelMessageEdit": "Modifier",
"channelMessageDelete": "Supprimer",
"channelLoadError": "Impossible de charger les canaux",
"channelSendError": "Impossible d'envoyer le message",
"channelDeleted": "Ce canal a été supprimé",
"searchChannels": "Rechercher des canaux...",
"channelUnreadCount": "{count, plural, =1{1 message non lu} other{{count} messages non lus}}",
"channelCreateError": "Impossible de créer le canal",
"channelMessageHint": "Message...",
"audioUploadError": "Échec de l'envoi de l'audio : {error}",
"shareChat": "Partager le chat",
"@shareChat": {
"description": "Dialog title and action label for sharing a chat."
},
"shareChatDescription": "Les messages envoyés après la création du lien ne seront pas partagés. Les personnes disposant de l’URL pourront consulter le chat partagé.",
"@shareChatDescription": {
"description": "Explains that a shared chat link is a snapshot."
},
"shareChatExisting": "Vous avez déjà partagé ce chat.",
"@shareChatExisting": {
"description": "Explains that the chat already has an existing shared link."
},
"shareChatDeleteLink": "Supprimer ce lien",
"@shareChatDeleteLink": {
"description": "Action label to delete the current shared chat link."
},
"shareChatDeleteAndCreate": "et créer un nouveau lien partagé.",
"@shareChatDeleteAndCreate": {
"description": "Continuation text after the delete shared link action."
},
"copyLink": "Copier le lien",
"@copyLink": {
"description": "Button label to copy a newly created shared chat URL."
},
"updateAndCopyLink": "Mettre à jour et copier le lien",
"@updateAndCopyLink": {
"description": "Button label to refresh a shared chat snapshot and copy the URL."
},
"sharedChatCopied": "URL du chat partagé copiée dans le presse-papiers.",
"@sharedChatCopied": {
"description": "Snackbar shown after copying a shared chat URL."
},
"shareSystemSheet": "Partager...",
"@shareSystemSheet": {
"description": "Button label to open the platform share sheet."
},
"chatShareFailed": "Impossible de partager le chat",
"@chatShareFailed": {
"description": "Snackbar shown when chat sharing fails."
},
"sharedLinkDeleted": "Lien du chat partagé supprimé",
"@sharedLinkDeleted": {
"description": "Snackbar shown after deleting a shared chat link."
},
"deleteSharedLinkFailed": "Impossible de supprimer le lien partagé",
"@deleteSharedLinkFailed": {
"description": "Snackbar shown when deleting a shared chat link fails."
},
"systemPrompts": "Prompts système",
"globalSystemPrompt": "Prompt système global",
"modelSystemPrompts": "Prompts système des modèles",
"folderSystemPrompts": "Prompts système des dossiers",
"openWebuiModelSettings": "Paramètres de modèle Open WebUI",
"openWebuiFolderSettings": "Paramètres de dossier Open WebUI",
"accessibleModelsCount": "{count} modèles accessibles",
"accessibleFoldersCount": "{count} dossiers accessibles",
"unableToLoadOpenWebuiSettings": "Impossible de charger les paramètres Open WebUI.",
"unableToLoadModels": "Impossible de charger les modèles.",
"unableToLoadFolders": "Impossible de charger les dossiers.",
"noAccessibleModelsFound": "Aucun modèle accessible trouvé.",
"noAccessibleFoldersFound": "Aucun dossier accessible trouvé.",
"tapToLoadServerPromptSettings": "Touchez pour charger les paramètres de prompt du serveur.",
"loadingFromOpenWebui": "Chargement depuis Open WebUI...",
"globalSystemPromptEditorDescription": "Enregistré dans vos paramètres utilisateur Open WebUI et utilisé comme prompt système par défaut du chat.",
"modelNoEditableServerRecord": "Ce modèle n’a aucun enregistrement serveur modifiable.",
"modelSystemPromptTitle": "Prompt système de {modelName}",
"modelSystemPromptEditorDescription": "Enregistré dans params.system du modèle Open WebUI.",
"modelNoWriteAccessDescription": "Vous n’avez pas d’accès en écriture à ce modèle.",
"unableToLoadFolder": "Impossible de charger ce dossier.",
"folderSystemPromptTitle": "Prompt système de {folderName}",
"folderSystemPromptEditorDescription": "Enregistré dans data.system_prompt du dossier Open WebUI.",
"notSet": "Non défini",
"enterSystemPrompt": "Saisir le prompt système",
"close": "Fermer",
"connectionHealth": "État de la connexion",
"personalization": "Personnalisation",
"personalizationSubtitle": "Modèle par défaut, prompt personnel et mémoires",
"defaultImageGenerationModel": "Modèle de génération d’images par défaut",
"defaultImageGenerationModelDescription": "Saisissez l’ID d’un modèle d’images OpenRouter. Laissez vide pour utiliser le modèle par défaut d’OpenRouter.",
"openRouterDefaultImageGenerationModel": "Modèle OpenRouter par défaut (openai/gpt-5-image)",
"yourSystemPrompt": "Votre prompt système",
"yourSystemPromptDescription": "Définissez un prompt système personnel qu’Open WebUI appliquera à vos chats.",
"memoryTitle": "Mémoire",
"memoryEnabledDescription": "Autorisez le serveur à utiliser vos mémoires enregistrées dans les futurs chats.",
"memoryDisabledDescription": "Les mémoires restent sur le serveur, mais ne seront pas injectées dans les chats.",
"manageMemories": "Gérer les mémoires",
"manageMemoriesDescription": "Ajoutez, modifiez et supprimez les informations que le serveur retient sur vous.",
"savedMemoriesCount": "{count} mémoires enregistrées",
"memoryEditorDescription": "Gardez les mémoires courtes et précises pour que le serveur les applique correctement.",
"memoryHint": "Exemple : je préfère des réponses concises avec des exemples de code.",
"addMemory": "Ajouter une mémoire",
"editMemory": "Modifier la mémoire",
"deleteMemory": "Supprimer la mémoire",
"deleteMemoryConfirm": "Supprimer cette mémoire enregistrée du serveur ?",
"clearAllMemories": "Effacer toutes les mémoires",
"clearAllMemoriesDescription": "Cela supprime définitivement toutes les mémoires enregistrées pour votre compte.",
"noMemoriesSaved": "Aucune mémoire enregistrée pour le moment.",
"memoryUpdatedAt": "Mis à jour {formattedTime}",
"advancedPromptOverrides": "Remplacements avancés de prompts",
"advancedPromptOverridesDescription": "Les remplacements de prompts par modèle se trouvent dans App et chat.",
"audioSettingsTitle": "Audio",
"audioSettingsSubtitle": "Voix vers texte et synthèse vocale",
"appAndChat": "App et chat",
"appAndChatSubtitle": "Thème, langue, comportement du chat et remplacements avancés",
"accountSettingsTitle": "Compte",
"accountSettingsSubtitle": "Détails du profil et gestion du mot de passe",
"accountDetails": "Détails du compte",
"signInToManageAccount": "Connectez-vous pour gérer les détails du compte.",
"emailLabel": "E-mail",
"roleLabel": "Rôle",
"accountStatus": "Statut",
"profileDetails": "Détails du profil",
"name": "Nom",
"avatarUrl": "URL de l’avatar",
"avatarUrlHint": "https://example.com/avatar.png",
"bioLabel": "Bio",
"bioHint": "Une courte description de vous.",
"genderLabel": "Genre",
"genderPreferNotToSay": "Préfère ne pas le dire",
"genderMale": "Masculin",
"genderFemale": "Féminin",
"genderCustom": "Personnalisé",
"customGenderLabel": "Genre personnalisé",
"customGenderHint": "Saisissez votre genre",
"customGenderRequired": "Saisissez un genre personnalisé ou choisissez une autre option.",
"birthDateLabel": "Date de naissance",
"selectBirthDate": "Sélectionner une date",
"birthDateHint": "AAAA-MM-JJ",
"currentAvatar": "Avatar actuel",
"uploadFromDevice": "Importer depuis l’appareil",
"useInitials": "Initiales",
"removeAvatar": "Supprimer",
"avatarUploadFailed": "Impossible de mettre à jour l’avatar.",
"timezoneLabel": "Fuseau horaire",
"timezoneHint": "Europe/Paris",
"saveProfile": "Enregistrer le profil",
"changePasswordTitle": "Modifier le mot de passe",
"passwordChangeUnavailable": "Les changements de mot de passe sont désactivés sur ce serveur.",
"currentPassword": "Mot de passe actuel",
"newPassword": "Nouveau mot de passe",
"confirmNewPassword": "Confirmer le nouveau mot de passe",
"nameRequired": "Saisissez un nom avant d’enregistrer.",
"profileUpdated": "Profil mis à jour.",
"passwordFieldsRequired": "Saisissez votre mot de passe actuel et le nouveau.",
"passwordsDoNotMatch": "Les nouveaux mots de passe ne correspondent pas.",
"passwordUpdated": "Mot de passe mis à jour.",
"activeStatus": "Actif",
"inactiveStatus": "Inactif",
"appInformation": "Application Conduit",
"appVersion": "Version",
"serverInformation": "Informations du serveur",
"serverInfoUnavailable": "Les informations du serveur sont indisponibles pour le moment.",
"serverNameLabel": "Nom du serveur",
"serverVersionLabel": "Version du serveur",
"latestVersionLabel": "Dernière version",
"deploymentIdLabel": "ID de déploiement",
"defaultLocaleLabel": "Langue par défaut",
"userCountLabel": "Nombre d’utilisateurs",
"serverDefaultModelsLabel": "Modèles par défaut",
"loginFormLabel": "Formulaire de connexion",
"passwordChangesLabel": "Changements de mot de passe",
"apiKeysLabel": "Clés API",
"audioInputLabel": "Entrée audio",
"audioOutputLabel": "Sortie audio",
"speechToTextEngineLabel": "Moteur voix vers texte",
"textToSpeechEngineLabel": "Moteur de synthèse vocale",
"licenseMetadataLabel": "Métadonnées de licence",
"enabledLabel": "Activé",
"disabledLabel": "Désactivé",
"noEmailLabel": "Aucun e-mail",
"userFallbackName": "Utilisateur",
"unknownLabel": "Inconnu",
"socketNotConnected": "Non connecté",
"socketConnected": "Connecté",
"socketDisconnected": "Déconnecté",
"socketLatencyLabel": "Latence",
"socketReconnectsLabel": "Reconnexions",
"socketLastHeartbeat": "Dernier heartbeat : {time}",
"socketTransportWebSocket": "Transport WebSocket",
"socketTransportPolling": "Transport HTTP polling",
"socketTransportUnknown": "Transport inconnu",
"socketQualityExcellent": "Excellent",
"socketQualityGood": "Bon",
"socketQualityFair": "Moyen",
"socketQualityPoor": "Mauvais",
"timeJustNow": "à l’instant",
"timeSecondsAgo": "il y a {count}s",
"timeMinutesAgo": "il y a {count}m",
"timeHoursAgo": "il y a {count}h",
"attach": "Joindre",
"@attach": {
"description": "Button label to attach content to the current chat or folder chat."
},
"attachWebpageDescription": "Collez une URL pour intégrer son contenu au chat.",
"@attachWebpageDescription": {
"description": "Description shown in the web page attachment dialog."
},
"webpageUrlLabel": "URL de la page web",
"@webpageUrlLabel": {
"description": "Label for the URL field in the web page attachment dialog."
},
"invalidHttpUrl": "Saisissez une URL http(s) valide.",
"@invalidHttpUrl": {
"description": "Validation message when a URL is missing or not HTTP/HTTPS."
},
"youtubeTranscriptFetchFailed": "Impossible de récupérer la transcription YouTube.",
"@youtubeTranscriptFetchFailed": {
"description": "Error shown when a YouTube transcript cannot be fetched."
},
"webpageNoReadableContent": "La page ne contenait aucun contenu lisible.",
"@webpageNoReadableContent": {
"description": "Error shown when a fetched webpage has no readable text content."
},
"failedToAttachContent": "Impossible de joindre le contenu.",
"@failedToAttachContent": {
"description": "Generic error shown when attaching web content fails."
},
"scrollToBottom": "Aller en bas",
"@scrollToBottom": {
"description": "Tooltip for the button that scrolls a chat to the newest message."
},
"editFolder": "Modifier le dossier",
"@editFolder": {
"description": "Title and menu label for editing a folder."
},
"editFolderDescription": "Mettez à jour le nom et l’icône du dossier sur le serveur.",
"@editFolderDescription": {
"description": "Description shown in the folder edit sheet."
},
"icon": "Icône",
"@icon": {
"description": "Label for selecting an icon."
},
"folderIconDescription": "Choisissez l’icône du dossier.",
"@folderIconDescription": {
"description": "Subtitle for the folder icon picker."
},
"defaultLabel": "Par défaut",
"@defaultLabel": {
"description": "Generic label for the default option."
},
"systemPrompt": "Prompt système",
"@systemPrompt": {
"description": "Singular label for a system prompt field or menu item."
},
"move": "Déplacer",
"@move": {
"description": "Context action to move an item."
},
"moveToFolder": "Déplacer vers un dossier",
"@moveToFolder": {
"description": "Title for choosing a destination folder for a chat."
},
"moveFolder": "Déplacer le dossier",
"@moveFolder": {
"description": "Title for choosing a destination parent for a folder."
},
"noFolder": "Aucun dossier",
"@noFolder": {
"description": "Option to remove a chat from any folder."
},
"topLevel": "Niveau supérieur",
"@topLevel": {
"description": "Option to move a folder to the top level."
},
"failedToMoveFolder": "Impossible de déplacer le dossier",
"@failedToMoveFolder": {
"description": "Error shown when moving a folder fails."
},
"failedToRenameFolder": "Impossible de renommer le dossier",
"@failedToRenameFolder": {
"description": "Error shown when renaming a folder fails."
},
"browseKnowledgeBase": "Parcourir la base de connaissances",
"@browseKnowledgeBase": {
"description": "Title for opening the knowledge base picker."
},
"knowledgePickerHint": "Appuyez sur Entrée pour choisir un document",
"@knowledgePickerHint": {
"description": "Hint shown for keyboard selection in the knowledge base picker."
},
"execution": "Exécution",
"@execution": {
"description": "Fallback label for an unnamed code execution."
},
"codeExecutionTitle": "Exécution de code",
"@codeExecutionTitle": {
"description": "Fallback title for a code execution details sheet."
},
"codeExecutionFailed": "Échec de {label}",
"@codeExecutionFailed": {
"description": "Title shown when a named code execution fails.",
"placeholders": {
"label": {
"type": "String",
"example": "Execution"
}
}
},
"codeExecutionRunning": "{label}…",
"@codeExecutionRunning": {
"description": "Title shown while a named code execution is still running.",
"placeholders": {
"label": {
"type": "String",
"example": "Execution"
}
}
},
"language": "Langage",
"@language": {
"description": "Label for a programming language field."
},
"code": "Code",
"@code": {
"description": "Label for source code content."
},
"output": "Sortie",
"@output": {
"description": "Label for execution output."
},
"download": "Télécharger",
"@download": {
"description": "Fallback label for a downloadable file."
},
"languageWithValue": "Langage : {language}",
"@languageWithValue": {
"description": "Label and value for a programming language.",
"placeholders": {
"language": {
"type": "String",
"example": "Python"
}
}
},
"previewDeferredLargeContent": "Aperçu différé pour le contenu volumineux.",
"@previewDeferredLargeContent": {
"description": "Message shown when an inline preview is delayed because content is large."
},
"openPreview": "Ouvrir l’aperçu",
"@openPreview": {
"description": "Button to open a deferred preview."
},
"copiedToClipboard": "Copié dans le presse-papiers",
"@copiedToClipboard": {
"description": "Snackbar message after copying content to the clipboard."
},
"preview": "Aperçu",
"@preview": {
"description": "Button label for opening a preview."
},
"alertTip": "Astuce",
"@alertTip": {
"description": "Fallback label for a tip markdown alert."
},
"alertImportant": "Important",
"@alertImportant": {
"description": "Fallback label for an important markdown alert."
},
"alertWarning": "Avertissement",
"@alertWarning": {
"description": "Fallback label for a warning markdown alert."
},
"alertCaution": "Attention",
"@alertCaution": {
"description": "Fallback label for a caution markdown alert."
},
"alertNote": "Note",
"@alertNote": {
"description": "Fallback label for a note markdown alert."
},
"markdownDetailsGroupPendingTitle": "Analyse de {summary}",
"@markdownDetailsGroupPendingTitle": {
"description": "Title shown for a pending grouped tool-call details block.",
"placeholders": {
"summary": {
"type": "String"
}
}
},
"markdownDetailsGroupCompleteTitle": "Analyse terminée : {summary}",
"@markdownDetailsGroupCompleteTitle": {
"description": "Title shown for a completed grouped tool-call details block.",
"placeholders": {
"summary": {
"type": "String"
}
}
},
"markdownDetailsGroupUnnamedTool": "outil",
"@markdownDetailsGroupUnnamedTool": {
"description": "Fallback label used when a grouped tool call has no tool name."
},
"folderIconFolder": "Dossier",
"@folderIconFolder": {
"description": "Accessibility label for the folder icon option."
},
"folderIconOpenFolder": "Dossier ouvert",
"@folderIconOpenFolder": {
"description": "Accessibility label for the open folder icon option."
},
"folderIconBriefcase": "Mallette",
"@folderIconBriefcase": {
"description": "Accessibility label for the briefcase folder icon option."
},
"folderIconBooks": "Livres",
"@folderIconBooks": {
"description": "Accessibility label for the books folder icon option."
},
"folderIconMemo": "Mémo",
"@folderIconMemo": {
"description": "Accessibility label for the memo folder icon option."
},
"folderIconDividers": "Intercalaires",
"@folderIconDividers": {
"description": "Accessibility label for the dividers folder icon option."
},
"folderIconTools": "Outils",
"@folderIconTools": {
"description": "Accessibility label for the tools folder icon option."
},
"folderIconToolbox": "Boîte à outils",
"@folderIconToolbox": {
"description": "Accessibility label for the toolbox folder icon option."
},
"folderIconSparkles": "Étincelles",
"@folderIconSparkles": {
"description": "Accessibility label for the sparkles folder icon option."
},
"folderIconBrain": "Cerveau",
"@folderIconBrain": {
"description": "Accessibility label for the brain folder icon option."
},
"folderIconRocket": "Fusée",
"@folderIconRocket": {
"description": "Accessibility label for the rocket folder icon option."
},
"folderIconTarget": "Cible",
"@folderIconTarget": {
"description": "Accessibility label for the target folder icon option."
},
"folderIconGeneric": "Icône de dossier",
"@folderIconGeneric": {
"description": "Generic accessibility label for a custom folder icon."
},
"thread": "Fil",
"@thread": {
"description": "Title and context action for a message thread."
},
"threadWithCount": "Fil ({count})",
"@threadWithCount": {
"description": "Thread action label with reply count.",
"placeholders": {
"count": {
"type": "int",
"example": "3"
}
}
},
"channelMembersTitle": "Membres ({count})",
"@channelMembersTitle": {
"description": "Title for the channel members sheet.",
"placeholders": {
"count": {
"type": "int",
"example": "5"
}
}
},
"channelInputPlaceholder": "Écrivez ici...",
"@channelInputPlaceholder": {
"description": "Placeholder for the channel message composer."
},
"channelUnknownMember": "Inconnu",
"@channelUnknownMember": {
"description": "Fallback name for a channel member with no display name."
},
"replyInputPlaceholder": "Répondre...",
"@replyInputPlaceholder": {
"description": "Placeholder for the thread reply composer."
},
"editPhoto": "Modifier la photo",
"@editPhoto": {
"description": "Action to edit the profile photo."
},
"replyingToUser": "Réponse à {name}",
"@replyingToUser": {
"description": "Label shown above the channel composer when replying to a user.",
"placeholders": {
"name": {
"type": "String",
"example": "Alex"
}
}
},
"voiceCallWithModel": "Appel vocal avec {modelName}",
"@voiceCallWithModel": {
"description": "Notification title for an ongoing voice call with a model.",
"placeholders": {
"modelName": {
"type": "String",
"example": "GPT-4"
}
}
},
"notificationPermissionTitle": "Autorisation de notification",
"@notificationPermissionTitle": {
"description": "Title for the system notification permission prompt."
},
"callNotificationPermissionRationale": "Les alertes d’appel nécessitent l’autorisation de notification.",
"@callNotificationPermissionRationale": {
"description": "Rationale shown when requesting notification permission for call alerts."
},
"callNotificationPermissionPost": "Autorisez les notifications pour afficher les appels entrants.",
"@callNotificationPermissionPost": {
"description": "Instruction shown when requesting notification permission for incoming calls."
},
"acceptCall": "Accepter",
"@acceptCall": {
"description": "Call action to accept an incoming call."
},
"declineCall": "Refuser",
"@declineCall": {
"description": "Call action to decline an incoming call."
},
"missedCall": "Appel manqué",
"@missedCall": {
"description": "Notification subtitle for a missed call."
},
"callBack": "Rappeler",
"@callBack": {
"description": "Notification action to call back after a missed call."
},
"calling": "Appel...",
"@calling": {
"description": "Notification subtitle while starting a call."
},
"hangUp": "Raccrocher",
"@hangUp": {
"description": "Notification action to hang up a call."
},
"incomingCallChannelName": "Appel entrant",
"@incomingCallChannelName": {
"description": "Android notification channel name for incoming calls."
},
"missedCallChannelName": "Appel manqué",
"@missedCallChannelName": {
"description": "Android notification channel name for missed calls."
},
"mute": "Couper le micro",
"@mute": {
"description": "Notification action to mute a call."
},
"unmute": "Réactiver le micro",
"@unmute": {
"description": "Notification action to unmute a call."
},
"voiceCallMuted": "Micro coupé",
"@voiceCallMuted": {
"description": "Status label when a voice call is muted."
},
"voiceCallChannelDescription": "Notifications d’appels vocaux en cours",
"@voiceCallChannelDescription": {
"description": "Android notification channel description for ongoing voice calls."
},
"@greetingTitle": {
"description": "Greeting shown on the empty chat page.",
"placeholders": {
"username": {
"type": "String",
"example": "Alex"
}
}
},
"@continueWithProvider": {
"description": "Button text for OAuth provider sign-in.",
"placeholders": {
"provider": {
"type": "String",
"example": "Google"
}
}
},
"@channelMembers": {
"description": "Member count display in channel header",
"placeholders": {
"count": {
"type": "int"
}
}
},
"@audioUploadError": {
"description": "Error message when audio upload fails",
"placeholders": {
"error": {
"type": "String",
"description": "The error message"
}
}
},
"@accessibleModelsCount": {
"description": "Subtitle showing how many accessible models are listed.",
"placeholders": {
"count": {
"type": "int",
"example": "4"
}
}
},
"@accessibleFoldersCount": {
"description": "Subtitle showing how many accessible folders are listed.",
"placeholders": {
"count": {
"type": "int",
"example": "3"
}
}
},
"@modelSystemPromptTitle": {
"description": "Title for a model system prompt editor.",
"placeholders": {
"modelName": {
"type": "String",
"example": "GPT-4"
}
}
},
"@folderSystemPromptTitle": {
"description": "Title for a folder system prompt editor.",
"placeholders": {
"folderName": {
"type": "String",
"example": "Work"
}
}
},
"@savedMemoriesCount": {
"description": "Shows how many memories are saved.",
"placeholders": {
"count": {
"type": "int"
}
}
},
"@memoryUpdatedAt": {
"description": "Shows when a memory was last updated.",
"placeholders": {
"formattedTime": {}
}
},
"@socketLastHeartbeat": {
"description": "Shows when the socket last received a heartbeat.",
"placeholders": {
"time": {
"type": "String",
"example": "just now"
}
}
},
"@timeSecondsAgo": {
"description": "Compact relative time label for seconds ago.",
"placeholders": {
"count": {
"type": "int",
"example": "12"
}
}
},
"@timeMinutesAgo": {
"description": "Compact relative time label for minutes ago.",
"placeholders": {
"count": {
"type": "int",
"example": "5"
}
}
},
"@timeHoursAgo": {
"description": "Compact relative time label for hours ago.",
"placeholders": {
"count": {
"type": "int",
"example": "2"
}
}
},
"rateLimitExceeded": "Trop de requêtes. Veuillez patienter avant de réessayer.",
"@rateLimitExceeded": {
"description": "Error shown when the server rejects a request due to rate limiting."
},
"rateLimitRetryAfter": "Veuillez patienter {duration} avant de réessayer.",
"@rateLimitRetryAfter": {
"description": "Advice shown when a rate limit response includes a retry delay.",
"placeholders": {
"duration": {
"type": "String",
"example": "1m 30s"
}
}
},
"rateLimitRetrySoon": "Veuillez patienter un instant avant de réessayer.",
"@rateLimitRetrySoon": {
"description": "Advice shown when a rate limit response does not include an exact retry delay."
},
"securityCertificateError": "Erreur de certificat de sécurité. Impossible de vérifier l’identité du serveur.",
"@securityCertificateError": {
"description": "Error shown when the server TLS certificate cannot be trusted or verified."
},
"noToolsAvailable": "Aucun outil disponible",
"@noToolsAvailable": {
"description": "Empty state shown when no tools are available in the composer overflow menu."
},
"failedToLoadTools": "Impossible de charger les outils",
"@failedToLoadTools": {
"description": "Error shown when the composer overflow menu cannot load tools."
},
"terminalExpandAction": "Plein écran",
"terminalReopenFullscreen": "Ouvert en plein écran - touchez pour rouvrir",
"terminalKeyTab": "Tab",
"terminalKeyUp": "Haut",
"terminalKeyDown": "Bas",
"terminalKeyCtrlC": "Ctrl-C",
"terminalCopyAction": "Copier",
"terminalPasteAction": "Coller",
"terminalNothingToCopy": "Aucune sélection à copier",
"terminalCopied": "Copié dans le presse-papiers",
"terminalPasteWhileDisconnected": "Connectez-vous pour coller",
"terminalPortsToggle": "Ports à l’écoute",
"releaseNotesManualSubtitle": "Changelog intégré pour {currentVersion}",
"settingsCategoryApp": "Application",
"settingsCategoryAi": "IA",
"settingsCategoryServer": "Serveur",
"settingsCategorySupport": "Assistance",
"settingsDataAndConnection": "Données et connexion",
"settingsAppearance": "Apparence",
"settingsAppearanceSubtitle": "Thème, palette de couleurs et langue",
"settingsChatSubtitle": "Comportement du chat, actions rapides et prompts avancés",
"workspaceTitle": "Workspace",
"workspaceSubtitle": "Manage server resources and access.",
"workspaceModels": "Models",
"workspaceKnowledge": "Knowledge",
"workspacePrompts": "Prompts",
"workspaceTools": "Tools",
"workspaceSkills": "Skills",
"workspaceCreate": "Create",
"workspaceEmpty": "No resources yet.",
"workspaceDenied": "You do not have permission to manage this workspace section.",
"workspaceUnsupported": "This server does not support Workspace management.",
"workspaceLoadFailed": "Workspace could not be loaded.",
"workspaceRetry": "Retry",
"workspaceSelectItem": "Select an item to view its details.",
"workspaceEditorComingSoon": "This editor will be available in the next Workspace milestone.",
"workspaceSearchHint": "Search workspace resources",
"workspaceLoadMore": "Load more",
"workspaceAccessTitle": "Sharing & access",
"workspaceAccessSharingDisabled": "Sharing is turned off for this resource, so access is read-only.",
"workspaceAccessPublicDisabled": "You do not have permission to share this publicly.",
"workspaceAccessPeopleHeading": "People & groups",
"workspaceAccessUsersDisabled": "Sharing with individual people is disabled; you can share with groups only.",
"workspaceAccessEmpty": "Not shared with anyone yet.",
"workspaceAccessAddPeople": "Add people or groups",
"workspaceAccessAddGroups": "Add groups",
"workspaceAccessVisibilityLabel": "Public",
"workspaceAccessVisibilityDescription": "Anyone on this server can view this resource.",
"workspaceAccessGroupBadge": "Group",
"workspaceAccessUserBadge": "Person",
"workspaceAccessCanEdit": "Can edit",
"workspaceAccessRemoveGrant": "Remove access",
"workspacePrincipalTitle": "Add people or groups",
"workspacePrincipalUsersTab": "People",
"workspacePrincipalGroupsTab": "Groups",
"workspacePrincipalSearchHint": "Search people by name or email",
"workspacePrincipalLoadFailed": "Could not load results.",
"workspacePrincipalSearchPrompt": "Search to find people to share with.",
"workspacePrincipalNoResults": "No matches found.",
"workspaceReadOnlyBadge": "Read only",
"workspaceReadOnlyExplanation": "You have view-only access to this resource.",
"workspaceEditorDiscardTitle": "Discard changes?",
"workspaceEditorDiscardMessage": "Your unsaved changes will be lost.",
"workspaceEditorDiscardConfirm": "Discard",
"workspaceEditorKeepEditing": "Keep editing",
"workspaceEditorSaveTooltip": "Save changes",
"workspaceEditorSaving": "Saving…",
"workspaceEditorMoreActions": "More actions",
"workspaceImportChooseFile": "Choose JSON file",
"workspaceImportPasteLabel": "Or paste JSON",
"workspaceImportPasteHint": "Paste exported JSON here",
"workspaceImportRun": "Import",
"workspaceImportInvalidJson": "That doesn't look like valid JSON.",
"workspaceImportEmpty": "No items were found to import.",
"workspaceImportReadFailed": "Could not read the selected file.",
"workspaceImportBatchFailed": "The import could not be completed.",
"workspaceImportSummary": "Imported {success} of {total} items",
"workspaceImportItemImported": "Imported",
"workspaceImportItemFailed": "Import failed",
"workspaceImportDone": "Done",
"workspaceModelNewTitle": "New model",
"@workspaceModelNewTitle": {
"description": "Title shown when creating a new workspace model."
},
"workspaceModelIdLabel": "Model ID",
"@workspaceModelIdLabel": {
"description": "Label for the unique model identifier field."
},
"workspaceModelBaseModel": "Base model",
"@workspaceModelBaseModel": {
"description": "Label for the base-model selector."
},
"workspaceModelBaseModelNone": "None (custom)",
"workspaceModelBaseModelRequired": "Choisissez un modèle de base.",
"@workspaceModelBaseModelRequired": {"description": "Validation shown when a non-admin model create or protected edit has no base model."},
"@workspaceModelBaseModelNone": {
"description": "Base-model option meaning no base model is used."
},
"workspaceModelName": "Name",
"@workspaceModelName": {
"description": "Label for the model display-name field."
},
"workspaceModelDescription": "Description",
"@workspaceModelDescription": {
"description": "Label for the model description field."
},
"workspaceModelTags": "Tags",
"@workspaceModelTags": {
"description": "Label for the model tags editor."
},
"workspaceModelTagsHint": "Add tag",
"@workspaceModelTagsHint": {
"description": "Action chip label to add a new tag."
},
"workspaceModelSystemPrompt": "System prompt",
"@workspaceModelSystemPrompt": {
"description": "Label for the model system prompt field."
},
"workspaceModelSuggestionPrompts": "Suggested prompts",
"@workspaceModelSuggestionPrompts": {
"description": "Label for the suggested prompts editor."
},
"workspaceModelAddSuggestion": "Add suggestion",
"@workspaceModelAddSuggestion": {
"description": "Button to add a suggested prompt."
},
"workspaceModelRemoveSuggestion": "Remove suggestion",
"@workspaceModelRemoveSuggestion": {
"description": "Tooltip to remove a suggested prompt."
},
"workspaceModelStopSequences": "Stop sequences",
"@workspaceModelStopSequences": {
"description": "Label for the stop-sequences field."
},
"workspaceModelStopHint": "Comma-separated stop sequences",
"@workspaceModelStopHint": {
"description": "Helper text for the stop-sequences field."
},
"workspaceModelAdvancedParams": "Advanced parameters (JSON)",
"@workspaceModelAdvancedParams": {
"description": "Label for the advanced inference parameters JSON field."
},
"workspaceModelParamsHint": "JSON object of additional parameters",
"@workspaceModelParamsHint": {
"description": "Helper text for a JSON parameters field."
},
"workspaceModelInvalidJson": "Enter a valid JSON object.",
"@workspaceModelInvalidJson": {
"description": "Validation error for a malformed JSON field."
},
"workspaceModelCapabilities": "Capabilities",
"@workspaceModelCapabilities": {
"description": "Label for the model capability toggles."
},
"workspaceModelTerminal": "Terminal ID",
"@workspaceModelTerminal": {
"description": "Label for the terminal identifier field."
},
"workspaceModelTtsVoice": "Text-to-speech voice",
"@workspaceModelTtsVoice": {
"description": "Label for the TTS voice field."
},
"workspaceModelDefaultFeatures": "Default features",
"@workspaceModelDefaultFeatures": {
"description": "Label for the default feature IDs field."
},
"workspaceModelBuiltinTools": "Built-in tools (JSON)",
"@workspaceModelBuiltinTools": {
"description": "Label for the built-in tools JSON field."
},
"workspaceModelKnowledge": "Knowledge",
"@workspaceModelKnowledge": {
"description": "Label for the knowledge relationship selector."
},
"workspaceModelTools": "Tools",
"@workspaceModelTools": {
"description": "Label for the tools relationship selector."
},
"workspaceModelSkills": "Skills",
"@workspaceModelSkills": {
"description": "Label for the skills relationship selector."
},
"workspaceModelFilters": "Filters",
"@workspaceModelFilters": {
"description": "Label for the filter functions selector."
},
"workspaceModelDefaultFilters": "Default filters",
"@workspaceModelDefaultFilters": {
"description": "Label for the default filter functions selector."
},
"workspaceModelActions": "Actions",
"@workspaceModelActions": {
"description": "Label for the action functions selector."
},
"workspaceModelSectionBasics": "Basics",
"@workspaceModelSectionBasics": {
"description": "Section header for basic model fields."
},
"workspaceModelSectionPrompt": "Prompt",
"@workspaceModelSectionPrompt": {
"description": "Section header for prompt-related model fields."
},
"workspaceModelSectionAdvanced": "Advanced",
"@workspaceModelSectionAdvanced": {
"description": "Section header for advanced model fields."
},
"workspaceModelSectionRelationships": "Relationships",
"@workspaceModelSectionRelationships": {
"description": "Section header for model relationship selectors."
},
"workspaceModelSectionAccess": "Access",
"@workspaceModelSectionAccess": {
"description": "Section header for model access controls."
},
"workspaceModelProfileImage": "Profile image",
"@workspaceModelProfileImage": {
"description": "Label for the model profile image."
},
"workspaceModelChangeImage": "Change image",
"@workspaceModelChangeImage": {
"description": "Button to pick a new profile image."
},
"workspaceModelRemoveImage": "Remove image",
"@workspaceModelRemoveImage": {
"description": "Button to clear the profile image."
},
"workspaceModelImageFailed": "Could not load the selected image.",
"@workspaceModelImageFailed": {
"description": "Error when picking a profile image fails."
},
"workspaceModelSelectNone": "None selected",
"@workspaceModelSelectNone": {
"description": "Subtitle when no relationship items are selected."
},
"workspaceModelSelectCount": "{count} selected",
"@workspaceModelSelectCount": {
"description": "Subtitle showing how many relationship items are selected.",
"placeholders": {
"count": {
"type": "int"
}
}
},
"workspaceModelRelationshipEmpty": "Nothing available to select.",
"@workspaceModelRelationshipEmpty": {
"description": "Empty state for a relationship picker."
},
"workspaceModelManageAccess": "Manage access",
"@workspaceModelManageAccess": {
"description": "Action to open the access-grants sheet for a model."
},
"workspaceModelClone": "Duplicate",
"@workspaceModelClone": {
"description": "Action that duplicates the model."
},
"workspaceModelCloneSuffix": "(copy)",
"@workspaceModelCloneSuffix": {
"description": "Suffix appended to a duplicated model name."
},
"workspaceModelActivate": "Activate",
"@workspaceModelActivate": {
"description": "Action that marks the model active."
},
"workspaceModelDeactivate": "Deactivate",
"@workspaceModelDeactivate": {
"description": "Action that marks the model inactive."
},
"workspaceModelHide": "Hide from selector",
"@workspaceModelHide": {
"description": "Action that hides the model from model selectors."
},
"workspaceModelUnhide": "Show in selector",
"@workspaceModelUnhide": {
"description": "Action that unhides the model in model selectors."
},
"workspaceModelDelete": "Delete model",
"@workspaceModelDelete": {
"description": "Action that deletes the model."
},
"workspaceModelDeleteConfirmTitle": "Delete model?",
"@workspaceModelDeleteConfirmTitle": {
"description": "Confirmation dialog title for deleting a model."
},
"workspaceModelDeleteConfirmMessage": "This permanently removes {name}.",
"@workspaceModelDeleteConfirmMessage": {
"description": "Confirmation dialog body for deleting a model.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceModelExport": "Export model",
"@workspaceModelExport": {
"description": "Action that exports a single model as JSON."
},
"workspaceModelExportAll": "Export all models",
"@workspaceModelExportAll": {
"description": "Action that exports every readable model as JSON."
},
"workspaceModelExportFailed": "The export could not be completed.",
"@workspaceModelExportFailed": {
"description": "Error when exporting models fails."
},
"workspaceModelImport": "Import models",
"@workspaceModelImport": {
"description": "Action that imports models from JSON."
},
"workspaceModelIdRequired": "A model ID is required.",
"@workspaceModelIdRequired": {
"description": "Validation error when the model ID is empty."
},
"workspaceModelNameRequired": "A name is required.",
"@workspaceModelNameRequired": {
"description": "Validation error when the model name is empty."
},
"workspaceModelSaved": "Model saved.",
"@workspaceModelSaved": {
"description": "Confirmation that the model was saved."
},
"workspaceModelSaveFailed": "The model could not be saved.",
"@workspaceModelSaveFailed": {
"description": "Error when saving the model fails."
},
"workspaceModelDeleted": "Model deleted.",
"@workspaceModelDeleted": {
"description": "Confirmation that the model was deleted."
},
"workspaceModelAddAction": "Add",
"@workspaceModelAddAction": {
"description": "Confirm button in a small add-text dialog."
},
"workspaceKnowledgeCreateTitle": "New knowledge base",
"@workspaceKnowledgeCreateTitle": {
"description": "Title of the create form for a new knowledge base."
},
"workspaceKnowledgeName": "Name",
"@workspaceKnowledgeName": {
"description": "Label for the knowledge base name field."
},
"workspaceKnowledgeDescription": "Description",
"@workspaceKnowledgeDescription": {
"description": "Label for the knowledge base description field."
},
"workspaceKnowledgeNameRequired": "A name is required.",
"@workspaceKnowledgeNameRequired": {
"description": "Validation error when the knowledge base name is empty."
},
"workspaceKnowledgeSaved": "Knowledge base saved.",
"@workspaceKnowledgeSaved": {
"description": "Confirmation that the knowledge base was saved."
},
"workspaceKnowledgeSaveFailed": "The knowledge base could not be saved.",
"@workspaceKnowledgeSaveFailed": {
"description": "Error when saving a knowledge base fails."
},
"workspaceKnowledgeDeleted": "Knowledge base deleted.",
"@workspaceKnowledgeDeleted": {
"description": "Confirmation that the knowledge base was deleted."
},
"workspaceKnowledgeDelete": "Delete knowledge base",
"@workspaceKnowledgeDelete": {
"description": "Overflow action that deletes the knowledge base."
},
"workspaceKnowledgeDeleteConfirmTitle": "Delete knowledge base?",
"@workspaceKnowledgeDeleteConfirmTitle": {
"description": "Confirmation dialog title for deleting a knowledge base."
},
"workspaceKnowledgeDeleteConfirmMessage": "This permanently removes {name} and detaches its files.",
"@workspaceKnowledgeDeleteConfirmMessage": {
"description": "Confirmation dialog body for deleting a knowledge base.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceKnowledgeReset": "Reset",
"@workspaceKnowledgeReset": {
"description": "Overflow action that removes all files from a knowledge base."
},
"workspaceKnowledgeResetConfirmTitle": "Reset knowledge base?",
"@workspaceKnowledgeResetConfirmTitle": {
"description": "Confirmation dialog title for resetting a knowledge base."
},
"workspaceKnowledgeResetConfirmMessage": "This removes all files from {name} but keeps the knowledge base.",
"@workspaceKnowledgeResetConfirmMessage": {
"description": "Confirmation dialog body for resetting a knowledge base.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceKnowledgeResetDone": "Knowledge base reset.",
"@workspaceKnowledgeResetDone": {
"description": "Confirmation that the knowledge base files were reset."
},
"workspaceKnowledgeExport": "Export knowledge base",
"@workspaceKnowledgeExport": {
"description": "Overflow action that exports a knowledge base archive."
},
"workspaceKnowledgeExportFailed": "The export could not be completed.",
"@workspaceKnowledgeExportFailed": {
"description": "Error when exporting a knowledge base fails."
},
"workspaceKnowledgeManageAccess": "Manage access",
"@workspaceKnowledgeManageAccess": {
"description": "Action that opens the sharing and access sheet for a knowledge base."
},
"workspaceKnowledgeViewAll": "All",
"@workspaceKnowledgeViewAll": {
"description": "Knowledge collection filter showing all knowledge bases."
},
"workspaceKnowledgeViewCreated": "Created by you",
"@workspaceKnowledgeViewCreated": {
"description": "Knowledge collection filter showing bases the user created."
},
"workspaceKnowledgeViewShared": "Shared with you",
"@workspaceKnowledgeViewShared": {
"description": "Knowledge collection filter showing bases shared with the user."
},
"workspaceKnowledgeSourceAll": "All sources",
"@workspaceKnowledgeSourceAll": {
"description": "Knowledge collection filter showing both local and connected sources."
},
"workspaceKnowledgeSourceLocal": "Local",
"@workspaceKnowledgeSourceLocal": {
"description": "Knowledge collection filter showing only local knowledge bases."
},
"workspaceKnowledgeSourceExternal": "Connected",
"@workspaceKnowledgeSourceExternal": {
"description": "Knowledge collection filter showing only external/connected knowledge bases."
},
"workspaceKnowledgeExternalBadge": "Connected",
"@workspaceKnowledgeExternalBadge": {
"description": "Badge marking a knowledge base as external/connected (read-only)."
},
"workspaceKnowledgeExternalReadOnly": "Connected knowledge bases are read-only in this app.",
"@workspaceKnowledgeExternalReadOnly": {
"description": "Notice shown when viewing an external/connected knowledge base."
},
"workspaceKnowledgeFilesTitle": "Files",
"@workspaceKnowledgeFilesTitle": {
"description": "Heading of the knowledge base file browser."
},
"workspaceKnowledgeFilesEmpty": "No files yet.",
"@workspaceKnowledgeFilesEmpty": {
"description": "Empty state when a knowledge base directory contains no files."
},
"workspaceKnowledgeFilesLoadFailed": "Files could not be loaded.",
"@workspaceKnowledgeFilesLoadFailed": {
"description": "Error when the knowledge base file list fails to load."
},
"workspaceKnowledgeRefreshFiles": "Refresh",
"@workspaceKnowledgeRefreshFiles": {
"description": "Tooltip for the button that refreshes the knowledge file list."
},
"workspaceKnowledgeRoot": "Root",
"@workspaceKnowledgeRoot": {
"description": "Breadcrumb label for the top level of a knowledge base."
},
"workspaceKnowledgeAddMenu": "Add files",
"@workspaceKnowledgeAddMenu": {
"description": "Tooltip for the menu that adds files or folders to a knowledge base."
},
"workspaceKnowledgeUpload": "Upload file",
"@workspaceKnowledgeUpload": {
"description": "Menu item to upload a single local file into a knowledge base."
},
"workspaceKnowledgeUploading": "Uploading {name}…",
"@workspaceKnowledgeUploading": {
"description": "Progress label shown while a file uploads into a knowledge base.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceKnowledgeUploadFailed": "The file could not be uploaded.",
"@workspaceKnowledgeUploadFailed": {
"description": "Error when uploading a file into a knowledge base fails."
},
"workspaceKnowledgeBatchAttach": "Upload multiple files",
"@workspaceKnowledgeBatchAttach": {
"description": "Menu item to upload several local files into a knowledge base at once."
},
"workspaceKnowledgeAttachExisting": "Attach server file",
"@workspaceKnowledgeAttachExisting": {
"description": "Menu item to attach an existing server file to a knowledge base."
},
"workspaceKnowledgeAttachFailed": "The file could not be attached.",
"@workspaceKnowledgeAttachFailed": {
"description": "Error when attaching an existing file to a knowledge base fails."
},
"workspaceKnowledgeAddText": "Add text file",
"@workspaceKnowledgeAddText": {
"description": "Menu item to create a text file and attach it to a knowledge base."
},
"workspaceKnowledgeAddTextName": "File name",
"@workspaceKnowledgeAddTextName": {
"description": "Label for the file name field when adding a text file."
},
"workspaceKnowledgeAddTextContent": "Content",
"@workspaceKnowledgeAddTextContent": {
"description": "Label for the content field when adding a text file."
},
"workspaceKnowledgeAddTextFailed": "The text file could not be added.",
"@workspaceKnowledgeAddTextFailed": {
"description": "Error when adding a text file to a knowledge base fails."
},
"workspaceKnowledgeNewFolder": "New folder",
"@workspaceKnowledgeNewFolder": {
"description": "Menu item and dialog title to create a new directory in a knowledge base."
},
"workspaceKnowledgeFolderName": "Folder name",
"@workspaceKnowledgeFolderName": {
"description": "Label for the folder name field."
},
"workspaceKnowledgeFolderCreateFailed": "The folder could not be created.",
"@workspaceKnowledgeFolderCreateFailed": {
"description": "Error when creating or renaming a knowledge base folder fails."
},
"workspaceKnowledgeRenameFolder": "Rename folder",
"@workspaceKnowledgeRenameFolder": {
"description": "Action to rename a knowledge base directory."
},
"workspaceKnowledgeDeleteFolder": "Delete folder",
"@workspaceKnowledgeDeleteFolder": {
"description": "Action to delete a knowledge base directory."
},
"workspaceKnowledgeDeleteFolderConfirmTitle": "Delete folder?",
"@workspaceKnowledgeDeleteFolderConfirmTitle": {
"description": "Confirmation dialog title for deleting a knowledge base directory."
},
"workspaceKnowledgeDeleteFolderConfirmMessage": "Files inside {name} move to the parent folder.",
"@workspaceKnowledgeDeleteFolderConfirmMessage": {
"description": "Confirmation dialog body for deleting a knowledge base directory.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceKnowledgeFolderDeleteFailed": "The folder could not be deleted.",
"@workspaceKnowledgeFolderDeleteFailed": {
"description": "Error when deleting a knowledge base folder fails."
},
"workspaceKnowledgeFileRename": "Rename",
"@workspaceKnowledgeFileRename": {
"description": "Per-file action to rename a knowledge base file."
},
"workspaceKnowledgeFileRefresh": "Re-index",
"@workspaceKnowledgeFileRefresh": {
"description": "Per-file action to re-index a knowledge base file."
},
"workspaceKnowledgeFileReindexed": "Re-indexing started.",
"@workspaceKnowledgeFileReindexed": {
"description": "Confirmation that re-indexing a knowledge base file began."
},
"workspaceKnowledgeFileMove": "Move",
"@workspaceKnowledgeFileMove": {
"description": "Per-file action to move a knowledge base file to another folder."
},
"workspaceKnowledgeFileRenameFailed": "The file could not be renamed.",
"@workspaceKnowledgeFileRenameFailed": {
"description": "Error when renaming a knowledge base file fails."
},
"workspaceKnowledgeFileMoveFailed": "The file could not be moved.",
"@workspaceKnowledgeFileMoveFailed": {
"description": "Error when moving a knowledge base file fails."
},
"workspaceKnowledgeFileDetach": "Remove from knowledge",
"@workspaceKnowledgeFileDetach": {
"description": "Per-file action to detach a file from a knowledge base."
},
"workspaceKnowledgeFileDetachTitle": "Remove file?",
"@workspaceKnowledgeFileDetachTitle": {
"description": "Confirmation dialog title for detaching a file from a knowledge base."
},
"workspaceKnowledgeFileDetachMessage": "Remove {name} from this knowledge base?",
"@workspaceKnowledgeFileDetachMessage": {
"description": "Confirmation dialog body for detaching a file from a knowledge base.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceKnowledgeFileDeleteUnderlying": "Also delete the underlying file",
"@workspaceKnowledgeFileDeleteUnderlying": {
"description": "Checkbox to delete the stored file when detaching, shown to owners/admins."
},
"workspaceKnowledgeFileDetachFailed": "The file could not be removed.",
"@workspaceKnowledgeFileDetachFailed": {
"description": "Error when detaching a file from a knowledge base fails."
},
"workspaceKnowledgeMoveTitle": "Move to folder",
"@workspaceKnowledgeMoveTitle": {
"description": "Title of the sheet for choosing a destination folder."
},
"workspaceKnowledgeMoveRoot": "Root (no folder)",
"@workspaceKnowledgeMoveRoot": {
"description": "Move destination representing the knowledge base root."
},
"workspaceKnowledgeStatusPending": "Processing…",
"@workspaceKnowledgeStatusPending": {
"description": "Status shown for a knowledge base file still being ingested."
},
"workspaceKnowledgeStatusFailed": "Failed",
"@workspaceKnowledgeStatusFailed": {
"description": "Status shown for a knowledge base file whose ingestion failed."
},
"workspacePromptCreateTitle": "New prompt",
"@workspacePromptCreateTitle": {
"description": "Title shown while creating a new workspace prompt."
},
"workspacePromptName": "Name",
"@workspacePromptName": {
"description": "Label for the prompt name field."
},
"workspacePromptNameRequired": "Name is required.",
"@workspacePromptNameRequired": {
"description": "Validation error when the prompt name is empty."
},
"workspacePromptCommand": "Command",
"@workspacePromptCommand": {
"description": "Label for the prompt slash-command field."
},
"workspacePromptCommandHint": "Only letters, numbers, hyphens, and underscores. Type it as a slash command in chat.",
"@workspacePromptCommandHint": {
"description": "Helper text explaining the allowed prompt command characters."
},
"workspacePromptCommandRequired": "Command is required.",
"@workspacePromptCommandRequired": {
"description": "Validation error when the prompt command is empty."
},
"workspacePromptCommandInvalid": "Only letters, numbers, hyphens, and underscores are allowed.",
"@workspacePromptCommandInvalid": {
"description": "Validation error when the prompt command contains illegal characters."
},
"workspacePromptCommandTaken": "That command is already in use.",
"@workspacePromptCommandTaken": {
"description": "Error shown when saving a prompt whose command collides with another prompt."
},
"workspacePromptContent": "Prompt content",
"@workspacePromptContent": {
"description": "Label for the prompt template body field."
},
"workspacePromptContentHint": "Write the prompt template…",
"@workspacePromptContentHint": {
"description": "Placeholder text for the empty prompt content field."
},
"workspacePromptContentRequired": "Prompt content is required.",
"@workspacePromptContentRequired": {
"description": "Validation error when the prompt content is empty."
},
"workspacePromptWriteTab": "Write",
"@workspacePromptWriteTab": {
"description": "Toggle label for the editable prompt content view."
},
"workspacePromptPreviewTab": "Preview",
"@workspacePromptPreviewTab": {
"description": "Toggle label for the rendered markdown preview of the prompt content."
},
"workspacePromptPreviewEmpty": "Nothing to preview yet.",
"@workspacePromptPreviewEmpty": {
"description": "Empty-state text shown in the prompt preview when there is no content."
},
"workspacePromptTags": "Tags",
"@workspacePromptTags": {
"description": "Label for the prompt tags field."
},
"workspacePromptTagAdd": "Add tag",
"@workspacePromptTagAdd": {
"description": "Action to add a tag to a prompt."
},
"workspacePromptVersionSection": "Version",
"@workspacePromptVersionSection": {
"description": "Section header for prompt versioning controls."
},
"workspacePromptCommitMessage": "Commit message",
"@workspacePromptCommitMessage": {
"description": "Label for the optional commit message recorded with a prompt version."
},
"workspacePromptCommitMessageHint": "Describe what changed (optional)",
"@workspacePromptCommitMessageHint": {
"description": "Placeholder for the prompt commit message field."
},
"workspacePromptSetProduction": "Set as production version",
"@workspacePromptSetProduction": {
"description": "Toggle that marks the saved prompt version as the live production version."
},
"workspacePromptSetProductionSubtitle": "Make this the live version used in chat.",
"@workspacePromptSetProductionSubtitle": {
"description": "Explanation for the production-version toggle."
},
"workspacePromptManageAccess": "Manage access",
"@workspacePromptManageAccess": {
"description": "Action to open the sharing/access editor for a prompt."
},
"workspacePromptClone": "Duplicate",
"@workspacePromptClone": {
"description": "Overflow action that clones a prompt."
},
"workspacePromptCloneSuffix": "(copy)",
"@workspacePromptCloneSuffix": {
"description": "Suffix appended to the name and command of a cloned prompt."
},
"workspacePromptUpdateDetails": "Save name & command only",
"@workspacePromptUpdateDetails": {
"description": "Overflow action that updates prompt metadata without creating a new version."
},
"workspacePromptDetailsSaved": "Details saved",
"@workspacePromptDetailsSaved": {
"description": "Confirmation that prompt name and command were updated."
},
"workspacePromptActivate": "Activate",
"@workspacePromptActivate": {
"description": "Overflow action that enables a prompt."
},
"workspacePromptDeactivate": "Deactivate",
"@workspacePromptDeactivate": {
"description": "Overflow action that disables a prompt."
},
"workspacePromptDelete": "Delete prompt",
"@workspacePromptDelete": {
"description": "Overflow action that deletes a prompt."
},
"workspacePromptDeleteConfirmTitle": "Delete prompt?",
"@workspacePromptDeleteConfirmTitle": {
"description": "Confirmation dialog title for deleting a prompt."
},
"workspacePromptDeleteConfirmMessage": "\"{name}\" will be permanently deleted.",
"@workspacePromptDeleteConfirmMessage": {
"description": "Confirmation dialog body for deleting a prompt.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspacePromptDeleted": "Prompt deleted",
"@workspacePromptDeleted": {
"description": "Confirmation that a prompt was deleted."
},
"workspacePromptSaved": "Prompt saved",
"@workspacePromptSaved": {
"description": "Confirmation that a prompt was saved."
},
"workspacePromptSaveFailed": "Couldn't save the prompt. Please try again.",
"@workspacePromptSaveFailed": {
"description": "Error shown when saving a prompt fails."
},
"workspacePromptImport": "Import prompts",
"@workspacePromptImport": {
"description": "Overflow action that imports prompt definitions from JSON."
},
"workspacePromptExport": "Export prompts",
"@workspacePromptExport": {
"description": "Overflow action that exports readable prompts as JSON."
},
"workspacePromptExportFailed": "Couldn't export prompts.",
"@workspacePromptExportFailed": {
"description": "Error shown when exporting prompts fails."
},
"workspacePromptHistory": "Version history",
"@workspacePromptHistory": {
"description": "Header of the prompt version-history panel."
},
"workspacePromptHistoryEmpty": "No versions yet.",
"@workspacePromptHistoryEmpty": {
"description": "Empty-state text when a prompt has no version history."
},
"workspacePromptHistoryLoadFailed": "Couldn't load version history.",
"@workspacePromptHistoryLoadFailed": {
"description": "Error shown when loading prompt history fails."
},
"workspacePromptHistoryCommitFallback": "No commit message",
"@workspacePromptHistoryCommitFallback": {
"description": "Placeholder shown for a history entry without a commit message."
},
"workspacePromptHistoryLive": "Live",
"@workspacePromptHistoryLive": {
"description": "Badge marking the active production version of a prompt."
},
"workspacePromptHistoryDiff": "Compare with production",
"@workspacePromptHistoryDiff": {
"description": "Action to diff a prompt version against the production version."
},
"workspacePromptHistoryDiffTitle": "Version comparison",
"@workspacePromptHistoryDiffTitle": {
"description": "Title of the prompt version diff sheet."
},
"workspacePromptHistoryDiffEmpty": "No content differences.",
"@workspacePromptHistoryDiffEmpty": {
"description": "Shown when two prompt versions have identical content."
},
"workspacePromptHistoryDiffNameChanged": "The name changed between these versions.",
"@workspacePromptHistoryDiffNameChanged": {
"description": "Note shown in the diff sheet when the prompt name changed."
},
"workspacePromptHistoryDiffFailed": "Couldn't compute the diff.",
"@workspacePromptHistoryDiffFailed": {
"description": "Error shown when computing a prompt version diff fails."
},
"workspacePromptHistoryRestore": "Restore this version",
"@workspacePromptHistoryRestore": {
"description": "Action that loads a version snapshot back into the editor."
},
"workspacePromptHistoryRestored": "Version content restored. Save to keep it.",
"@workspacePromptHistoryRestored": {
"description": "Confirmation that a version snapshot was loaded into the editor."
},
"workspacePromptHistorySetProduction": "Set as production",
"@workspacePromptHistorySetProduction": {
"description": "Action that pins a version as the production version."
},
"workspacePromptHistoryProductionSet": "Production version updated.",
"@workspacePromptHistoryProductionSet": {
"description": "Confirmation that the production version was changed."
},
"workspacePromptHistoryDelete": "Delete version",
"@workspacePromptHistoryDelete": {
"description": "Action that deletes a prompt history entry."
},
"workspacePromptHistoryDeleteConfirmTitle": "Delete version?",
"@workspacePromptHistoryDeleteConfirmTitle": {
"description": "Confirmation dialog title for deleting a prompt version."
},
"workspacePromptHistoryDeleteConfirmMessage": "This version snapshot will be removed. This can't be undone.",
"@workspacePromptHistoryDeleteConfirmMessage": {
"description": "Confirmation dialog body for deleting a prompt version."
},
"workspacePromptHistoryDeleted": "Version deleted",
"@workspacePromptHistoryDeleted": {
"description": "Confirmation that a prompt version was deleted."
},
"workspacePromptHistoryDeleteProduction": "The live production version can't be deleted.",
"@workspacePromptHistoryDeleteProduction": {
"description": "Error shown when trying to delete the active production version."
},
"workspaceSkillCreateTitle": "New skill",
"@workspaceSkillCreateTitle": {
"description": "Title shown while creating a new workspace skill."
},
"workspaceSkillName": "Name",
"@workspaceSkillName": {
"description": "Label for the skill name field."
},
"workspaceSkillNameHint": "e.g. Code Review Guidelines",
"@workspaceSkillNameHint": {
"description": "Placeholder example for the skill name field."
},
"workspaceSkillNameRequired": "Name is required.",
"@workspaceSkillNameRequired": {
"description": "Validation error when the skill name is empty."
},
"workspaceSkillId": "Skill ID",
"@workspaceSkillId": {
"description": "Label for the skill identifier field."
},
"workspaceSkillIdHint": "e.g. code-review-guidelines",
"@workspaceSkillIdHint": {
"description": "Placeholder example for the skill identifier field."
},
"workspaceSkillIdRequired": "Skill ID is required.",
"@workspaceSkillIdRequired": {
"description": "Validation error when the skill identifier is empty."
},
"workspaceSkillIdInvalid": "Only letters, numbers, hyphens, and underscores are allowed.",
"@workspaceSkillIdInvalid": {
"description": "Validation error when the skill identifier contains illegal characters."
},
"workspaceSkillIdTaken": "That skill ID or name is already in use.",
"@workspaceSkillIdTaken": {
"description": "Error shown when saving a skill whose id or name collides with another skill."
},
"workspaceSkillDescription": "Description",
"@workspaceSkillDescription": {
"description": "Label for the optional skill description field."
},
"workspaceSkillDescriptionHint": "e.g. Step-by-step instructions for code reviews",
"@workspaceSkillDescriptionHint": {
"description": "Placeholder example for the skill description field."
},
"workspaceSkillContent": "Instructions",
"@workspaceSkillContent": {
"description": "Label for the skill Markdown instructions body field."
},
"workspaceSkillContentHint": "Enter skill instructions in markdown…",
"@workspaceSkillContentHint": {
"description": "Placeholder text for the empty skill instructions field."
},
"workspaceSkillContentRequired": "Instructions are required.",
"@workspaceSkillContentRequired": {
"description": "Validation error when the skill instructions are empty."
},
"workspaceSkillWriteTab": "Write",
"@workspaceSkillWriteTab": {
"description": "Toggle label for the editable skill instructions view."
},
"workspaceSkillPreviewTab": "Preview",
"@workspaceSkillPreviewTab": {
"description": "Toggle label for the rendered markdown preview of the skill instructions."
},
"workspaceSkillPreviewEmpty": "Nothing to preview yet.",
"@workspaceSkillPreviewEmpty": {
"description": "Empty-state text shown in the skill preview when there is no content."
},
"workspaceSkillManageAccess": "Manage access",
"@workspaceSkillManageAccess": {
"description": "Action to open the sharing/access editor for a skill."
},
"workspaceSkillSaved": "Skill saved",
"@workspaceSkillSaved": {
"description": "Confirmation that a skill was saved."
},
"workspaceSkillSaveFailed": "Couldn't save the skill. Please try again.",
"@workspaceSkillSaveFailed": {
"description": "Error shown when saving a skill fails."
},
"workspaceSkillClone": "Duplicate",
"@workspaceSkillClone": {
"description": "Overflow action that clones a skill."
},
"workspaceSkillCloneSuffix": "(Clone)",
"@workspaceSkillCloneSuffix": {
"description": "Suffix appended to the name of a cloned skill."
},
"workspaceSkillActivate": "Activate",
"@workspaceSkillActivate": {
"description": "Overflow action that enables a skill."
},
"workspaceSkillDeactivate": "Deactivate",
"@workspaceSkillDeactivate": {
"description": "Overflow action that disables a skill."
},
"workspaceSkillDelete": "Delete skill",
"@workspaceSkillDelete": {
"description": "Overflow action that deletes a skill."
},
"workspaceSkillDeleteConfirmTitle": "Delete skill?",
"@workspaceSkillDeleteConfirmTitle": {
"description": "Confirmation dialog title for deleting a skill."
},
"workspaceSkillDeleteConfirmMessage": "\"{name}\" will be permanently deleted.",
"@workspaceSkillDeleteConfirmMessage": {
"description": "Confirmation dialog body for deleting a skill.",
"placeholders": {
"name": {
"type": "String"
}
}
},
"workspaceSkillDeleted": "Skill deleted",
"@workspaceSkillDeleted": {
"description": "Confirmation that a skill was deleted."
},
"workspaceSkillImport": "Import skills",
"@workspaceSkillImport": {
"description": "Title of the JSON skill import sheet."
},
"workspaceSkillImportMarkdown": "Import Markdown",
"@workspaceSkillImportMarkdown": {
"description": "Overflow action that imports a skill from a Markdown file into the create editor."
},
"workspaceSkillImportJson": "Import JSON",
"@workspaceSkillImportJson": {
"description": "Overflow action that imports one or more skills from a JSON file."
},
"workspaceSkillImportMarkdownLoaded": "Markdown loaded. Review and save to create the skill.",
"@workspaceSkillImportMarkdownLoaded": {
"description": "Confirmation that a Markdown file was loaded into the unsaved skill editor."
},
"workspaceSkillImportMarkdownFailed": "Couldn't read the Markdown file.",
"@workspaceSkillImportMarkdownFailed": {
"description": "Error shown when reading a Markdown skill file fails."
},
"workspaceSkillExport": "Export skills",
"@workspaceSkillExport": {
"description": "Overflow action that exports readable skills as JSON."
},
"workspaceSkillExportFailed": "Couldn't export skills.",
"@workspaceSkillExportFailed": {
"description": "Error shown when exporting skills fails."
},
"workspaceToolCreateTitle": "Create tool",
"workspaceToolName": "Name",
"workspaceToolNameHint": "e.g. My Tools",
"workspaceToolNameRequired": "Enter a tool name.",
"workspaceToolId": "Tool ID",
"workspaceToolIdHint": "Letters, numbers, and underscores; can't start with a number.",
"workspaceToolIdRequired": "Enter a tool ID.",
"workspaceToolIdInvalid": "Tool IDs use letters, numbers, and underscores and can't start with a number.",
"workspaceToolIdTaken": "That tool ID is already in use.",
"workspaceToolDescription": "Description",
"workspaceToolDescriptionHint": "e.g. Tools for performing various operations",
"workspaceToolContent": "Python source",
"workspaceToolContentHint": "Write your tool as a Python class named Tools…",
"workspaceToolContentRequired": "Add Python source before saving.",
"workspaceToolWarning": "Tools run arbitrary Python on the server — only add code from sources you trust.",
"workspaceToolSaved": "Tool saved",
"workspaceToolDeleted": "Tool deleted",
"workspaceToolSaveFailed": "Couldn't save the tool.",
"workspaceToolManageAccess": "Manage access",
"workspaceToolClone": "Duplicate",
"workspaceToolCloneSuffix": "(Clone)",
"workspaceToolDelete": "Delete",
"workspaceToolDeleteConfirmTitle": "Delete tool?",
"workspaceToolDeleteConfirmMessage": "\"{name}\" will be permanently deleted.",
"workspaceToolImport": "Import tools",
"workspaceToolImportJson": "Import JSON",
"workspaceToolImportUrl": "Import from URL",
"workspaceToolImportUrlTitle": "Import tool from URL",
"workspaceToolImportUrlHint": "Enter a raw or GitHub URL to a tool's Python file",
"workspaceToolImportUrlLabel": "URL",
"workspaceToolImportUrlInvalid": "Enter a valid URL.",
"workspaceToolImportUrlFailed": "Couldn't import the tool from that URL.",
"workspaceToolImportUrlLoaded": "Tool loaded — review and save.",
"workspaceToolExport": "Export tools",
"workspaceToolExportFailed": "Couldn't export tools.",
"workspaceToolManifest": "Manifest",
"workspaceToolManifestVersion": "Version {version}",
"workspaceToolManifestRequiredVersion": "Requires Open WebUI {version}",
"workspaceToolManifestFunding": "Funding: {url}",
"workspaceToolSpecs": "Generated specifications",
"workspaceToolDetails": "Détails de l’outil",
"workspaceToolFunctionCount": "{count, plural, =1{1 fonction} other{{count} fonctions}}",
"@workspaceToolFunctionCount": {"placeholders":{"count":{"type":"int"}}},
"workspaceToolSpecsEmpty": "No specifications were generated for this tool.",
"workspaceToolIncompatible": "This tool requires Open WebUI v{required}, but the server is v{current}. Update the server to save.",
"workspaceToolValves": "Valves",
"workspaceToolValvesTitle": "Valves",
"workspaceToolValvesServer": "Server valves",
"workspaceToolValvesUser": "User valves",
"workspaceToolValvesEmpty": "No valves",
"workspaceToolValvesSaved": "Valves updated",
"workspaceToolValvesSaveFailed": "Couldn't update valves.",
"workspaceToolValvesLoadFailed": "Couldn't load valves.",
"workspaceValveRequired": "required",
"workspaceValveDefault": "Default",
"workspaceValveCustom": "Custom",
"workspaceValveNone": "None",
"workspaceValveEnabled": "Enabled",
"workspaceValveDisabled": "Disabled",
"noteConflictCopyBadge": "Copie en conflit",
"noteConflictCopySuffix": " (copie en conflit)",
"notificationChannelDescription": "Notifier lorsqu'une personne envoie un message dans un canal ou un MP.",
"notificationChannelMessagesDescription": "Réponses, messages de canal et réponses terminées",
"notificationChannelMessagesName": "Messages",
"notificationChannelTitle": "Messages de canal",
"notificationChatDescription": "Notifier lorsqu'une réponse se termine dans une conversation que vous ne consultez pas.",
"notificationChatTitle": "Réponses de conversation",
"notificationDefaultTitle": "Nouveau message",
"notificationInAppBannerDescription": "Afficher une bannière dans l'application lorsqu'elle est ouverte.",
"notificationInAppBannerTitle": "Bannières dans l'application",
"notificationSoundAlwaysDescription": "Jouer le son même lorsque l'application est ouverte et active.",
"notificationSoundAlwaysTitle": "Toujours jouer le son",
"notificationSoundDescription": "Jouer un son à l'arrivée d'une notification.",
"notificationSoundTitle": "Son",
"notificationSystemDescription": "Afficher les notifications en dehors de l'application lorsqu'elle est en arrière-plan.",
"notificationSystemTitle": "Notifications système",
"notificationViewAction": "Afficher",
"notificationsEnabledDescription": "Recevoir des alertes lorsque l'application est en arrière-plan et dans l'application.",
"notificationsEnabledTitle": "Activer les notifications",
"notificationsPermissionDenied": "Les notifications sont désactivées dans les réglages du système.",
"notificationsSubtitle": "Alertes pour les réponses, les messages et les réponses terminées",
"notificationsTitle": "Notifications",
"hermesSecretsUnavailable": "Impossible d’accéder aux identifiants Hermes enregistrés. Déverrouillez le stockage sécurisé et réessayez.",
"hermesAgentSettingsTitle": "Agent Hermes",
"hermesAgentSettingsSubtitle": "Connecter un agent Hermes auto-hébergé",
"connectOpenWebUITitle": "Se connecter à Open WebUI",
"connectOpenWebUISubtitle": "Ajouter un serveur Open WebUI auto-hébergé",
"backendChooserWelcome": "Bienvenue sur Conduit",
"backendChooserPrompt": "Choisissez votre mode de connexion.",
"backendChooserOpenWebUISubtitle": "Utilisez votre serveur Open WebUI auto-hébergé avec les chats, les notes et bien plus encore.",
"backendChooserHermesTitle": "Utiliser un agent Hermes",
"backendChooserHermesSubtitle": "Connectez-vous directement à un agent Hermes auto-hébergé, sans serveur Open WebUI.",
"hermesApprovalRequired": "Approbation requise",
"hermesApprovalFallback": "L’agent demande l’autorisation de continuer.",
"openWebUiPromptOther": "Autre",
"@openWebUiPromptOther": {"description": "Label for a free-form answer to an Open WebUI ask-user question."},
"openWebUiPromptAnswerHint": "Saisissez votre réponse",
"@openWebUiPromptAnswerHint": {"description": "Placeholder for a free-form Open WebUI ask-user answer."},
"openWebUiPromptSubmit": "Envoyer",
"@openWebUiPromptSubmit": {"description": "Action that submits all answers to an Open WebUI ask-user prompt."},
"hermesApprovalApproved": "Approuvé ✓",
"hermesApprovalDenied": "Refusé",
"hermesApprovalApproveAction": "Approuver",
"hermesApprovalDenyAction": "Refuser",
"hermesEnableTitle": "Activer l’agent Hermes",
"hermesEnableSubtitle": "Utilisez votre agent Hermes auto-hébergé comme modèle dans le sélecteur.",
"hermesServerUrlTitle": "URL du serveur",
"hermesApiKeyTitle": "Clé API",
"hermesConfiguredReplacePlaceholder": "Configurée, saisissez-en une autre pour la remplacer",
"hermesApiKeyPlaceholder": "Saisissez API key",
"hermesMemoryKeyTitle": "Clé de mémoire (facultative)",
"hermesMemoryKeyPlaceholder": "Générée automatiquement si ce champ est vide",
"hermesCapabilitiesTitle": "Fonctionnalités",
"hermesCapabilityApproval": "Approbation",
"hermesCapabilitySkills": "Compétences",
"hermesCapabilityToolsets": "Ensembles d’outils",
"hermesCapabilityJobs": "Tâches",
"hermesCapabilitySessions": "Sessions",
"hermesTabInfoTitle": "Conversations et agents planifiés",
"hermesTabInfoSubtitle": "Disponible dans l’onglet Hermes après activation.",
"hermesNativeSettingsSubtitle": "Connectez-vous directement à un agent Hermes auto-hébergé.",
"hermesSelfHostedAgentLabel": "Agent auto-hébergé",
"hermesNoConversationsMessage": "Aucune conversation Hermes pour le moment.\nDémarrez un chat avec l’agent Hermes pour le retrouver ici.",
"hermesConversationsTitle": "Conversations",
"hermesBotsTitle": "Bots",
"hermesConversationsLoadError": "Impossible de charger les conversations Hermes.\nVérifiez la connexion dans Réglages → Agent Hermes.",
"hermesSchedulesLoading": "Chargement des planifications…",
"hermesSchedulesUnavailable": "Planifications indisponibles",
"hermesNoSchedulesYet": "Aucune planification pour le moment",
"hermesSchedulesSummary": "{active} actives · {total, plural, =1{1 planification} other{{total} planifications}}",
"hermesReviewSchedules": "Consulter les planifications",
"hermesScheduledAgentsTitle": "Agents planifiés",
"workspaceToolImportUrlHost": "Seules les URL d’outils GitHub peuvent être importées.",
"signInServerDescription": "Utilisez votre compte Open WebUI pour vous connecter au serveur ci-dessous.",
"openWebUIServer": "Serveur Open WebUI",
"serverAddressUnavailable": "Adresse du serveur indisponible",
"showPassword": "Afficher le mot de passe",
"hidePassword": "Masquer le mot de passe",
"reviewerModeEnabled": "Mode de révision activé. Vous pouvez ouvrir la démo sans serveur.",
"reviewerModeDisabled": "Mode de révision désactivé.",
"openSourceLicenses": "Licences open source",
"directConnectionsTitle": "Connexions directes",
"directConnectionsSubtitle": "Se connecter aux API compatibles avec OpenAI et à Ollama",
"directConnectionsDescription": "Connectez-vous à des fournisseurs de modèles sans Open WebUI. Les identifiants sont stockés de manière sécurisée sur cet appareil et envoyés au fournisseur avec les requêtes.",
"directConnectionsCombinedDescription": "Connectez-vous directement aux fournisseurs de modèles à l’aide de connexions synchronisées depuis Open WebUI ou stockées uniquement sur cet appareil.",
"openWebUiDirectConnectionsSectionTitle": "Serveur Open WebUI",
"openWebUiDirectConnectionsSectionDescription": "Enregistrées dans votre compte Open WebUI et disponibles sur les autres clients connectés.",
"deviceDirectConnectionsSectionTitle": "Sur cet appareil",
"deviceDirectConnectionsSectionDescription": "Les identifiants sont stockés de manière sécurisée sur cet appareil.",
"openWebUiDirectProfilesEmptyTitle": "Aucune connexion enregistrée sur le serveur",
"openWebUiDirectProfilesEmptySubtitle": "Ajoutez une connexion à une API compatible avec OpenAI pour la synchroniser via Open WebUI.",
"openWebUiDirectConnectionsLoadFailed": "Impossible de synchroniser les connexions depuis Open WebUI.",
"openWebUiDirectConnectionSourceLabel": "Open WebUI",
"deviceDirectConnectionSourceLabel": "Cet appareil",
"openWebUiDirectConnectionUnsupportedAuth": "Cette connexion utilise une méthode d’authentification que Conduit ne peut pas exploiter en toute sécurité.",
"directConnectionUnavailableLabel": "Indisponible",
"openWebUiDirectConnectionEditorDescription": "Les modifications sont enregistrées dans votre compte Open WebUI.",
"openWebUiDirectConnectionProviderDescription": "Les connexions enregistrées dans Open WebUI prennent en charge les API compatibles avec OpenAI.",
"openWebUiDirectConnectionFallbackName": "Connexion Open WebUI",
"openWebUiDirectConnectionsUnavailable": "Les connexions Open WebUI sont indisponibles.",
"directConnectionNoLongerExists": "Cette connexion n’existe plus.",
"openWebUiDirectConnectionDeleteMessage": "Cette action supprime {name} de votre compte Open WebUI et des autres clients connectés.",
"@openWebUiDirectConnectionDeleteMessage": {"description":"Confirmation message shown before deleting an Open WebUI-synced direct connection.","placeholders":{"name":{"type":"String"}}},
"addDirectConnection": "Ajouter une connexion",
"editDirectConnection": "Modifier la connexion",
"directConnectionName": "Nom de la connexion",
"directConnectionNameRequired": "Saisissez un nom de connexion.",
"directConnectionUrlInvalid": "Utilisez une URL http:// ou https:// valide.",
"directConnectionCredentialsReentryRequired": "Saisissez à nouveau les identifiants lorsque vous changez de serveur.",
"directConnectionApiKeyRequired": "Saisissez une clé API ou choisissez l’option sans authentification.",
"directConnectionHeaderNameRequired": "Saisissez un nom, puis ajoutez l’en-tête.",
"directConnectionCredentialTransferTitle": "Utiliser les identifiants avec le nouveau serveur ?",
"directConnectionCredentialTransferMessage": "La clé API et l’ensemble des en-têtes personnalisés seront envoyés au nouveau serveur. Continuez uniquement si vous lui faites confiance.",
"directConnectionCredentialTransferConfirm": "Utiliser les identifiants",
"directConnectionSaveFailed": "Impossible d’enregistrer cette connexion.",
"directConnectionSaveConflict": "Cette connexion a été modifiée ailleurs. Rouvrez-la avant d’enregistrer.",
"directConnectionReachFailed": "Impossible de joindre le fournisseur.",
"directConnectionDeleteTitle": "Supprimer la connexion ?",
"directConnectionDeleteMessage": "Cette action supprime {name} et ses identifiants de cet appareil.",
"directConnectionDeleteFailed": "Impossible de supprimer cette connexion.",
"directConnectionProbeConnected": "Connecté",
"directConnectionProbeConnectedModels": "{count, plural, =1{Connecté · 1 modèle} other{Connecté · {count} modèles}}",
"directProvider": "Type de fournisseur",
"openAICompatible": "Compatible avec OpenAI",
"ollama": "Ollama",
"openRouterProviderName": "OpenRouter",
"directApiBaseUrl": "URL de base",
"directOpenRouterUrlInvalid": "Utilisez la racine HTTPS /api/v1 d’OpenRouter (globale ou UE).",
"directOpenRouterBaseUrlDescription": "Utilise votre clé API OpenRouter, le catalogue de modèles authentifié et les outils gérés par Conduit.",
"directOpenRouterChatCompletionsDescription": "Les complétions de chat sont utilisées pour la recherche web native, la génération d’images, l’analyse des PDF et les annotations PDF réutilisables.",
"directCompletionApi": "API de complétion",
"directChatCompletions": "Complétions de chat",
"directResponses": "Responses",
"directChatCompletionsDescription": "Fonctionne avec les fournisseurs compatibles avec OpenAI, comme LM Studio, vLLM, LocalAI et OpenRouter.",
"directResponsesDescription": "Utilisez le flux d’événements typé de Responses. Choisissez cette option uniquement si le fournisseur expose /responses.",
"directApiVersion": "Version de l’API",
"directApiVersionDescription": "Facultatif. Ajoute le paramètre de requête api-version requis par les points de terminaison Azure OpenAI.",
"directAuthentication": "Authentification",
"noAuthentication": "Sans authentification",
"bearerToken": "Jeton Bearer",
"directApiKeyHeader": "En-tête de clé API",
"directApiKeyHeaderDescription": "Envoie l’identifiant dans l’en-tête api-key utilisé par Azure OpenAI.",
"directApiKey": "Clé API",
"directCustomHeaders": "En-têtes personnalisés",
"directManualModelIds": "ID de modèle saisis manuellement",
"directManualModelIdsDescription": "Facultatif. Saisissez un ID par ligne si le serveur ne peut pas répertorier ses modèles.",
"@directManualModelIdsDescription": {"placeholders":{}},
"directModelIdPrefix": "Préfixe de l’ID du modèle",
"directModelIdPrefixDescription": "Facultatif. Ajoute un espace de noms visible, comme studio.model-name, sans modifier l’ID du modèle envoyé au fournisseur.",
"directModelTags": "Étiquettes du modèle",
"directModelTagsDescription": "Facultatif. Séparez les étiquettes par des virgules ou des sauts de ligne.",
"syncDirectHistory": "Historique Open WebUI",
"syncDirectHistorySubtitle": "Les nouveaux chats directs sont synchronisés lorsque vous êtes connecté. Les chats existants conservent leur emplacement actuel.",
"directHistoryLocalOnlySubtitle": "Les nouveaux chats directs restent sur cet appareil. Les chats existants conservent leur emplacement actuel.",
"backendChooserDirectTitle": "Se connecter directement",
"backendChooserDirectSubtitle": "Utilisez une API compatible avec OpenAI ou Ollama sans Open WebUI.",
"testDirectConnection": "Tester la connexion",
"directConnectionTestUnavailable": "Le test de connexion n’est pas encore disponible.",
"finishDirectSetup": "Commencer à discuter",
"directProfilesEmptyTitle": "Aucune connexion directe pour le moment",
"directProfilesEmptySubtitle": "Ajoutez un serveur compatible avec OpenAI ou un serveur Ollama pour commencer.",
"directConnectionsSectionTitle": "Connexions",
"directSavedDataUnreadable": "Impossible de lire les données de connexion enregistrées.",
"directSecureStorageUnavailable": "Vérifiez l’accès au stockage sécurisé et réessayez.",
"onDevice": "Sur l’appareil",
"directConnectionError": "Erreur de connexion directe",
"directAttachmentUnsupported": "Ce modèle direct ne prend pas en charge cette pièce jointe.",
"backendChooserOpenWebUITitle": "Open WebUI",
"hermesMemoryKeyDescription": "La clé de mémoire associe la mémoire à long terme de l’agent à votre profil (X-Hermes-Session-Key). Si vous laissez ce champ vide, une clé stable est générée automatiquement lors de votre premier chat.",
"moreModels": "Plus de modèles",
"reasoningEffort": "Effort de raisonnement",
"reasoningEffortLow": "Faible",
"reasoningEffortMedium": "Moyen",
"reasoningEffortHigh": "Élevé",
"reasoningEffortMinimal": "Minimal",
"reasoningEffortExtraHigh": "Très élevé",
"reasoningEffortMaximum": "Maximal",
"reasoningEffortNone": "Aucun",
"customReasoningEffort": "Effort personnalisé",
"customReasoningEffortHint": "Saisissez un niveau pris en charge par le fournisseur",
"proxyServerVerificationFailed": "Impossible de vérifier le serveur Open WebUI. La session proxy a peut-être expiré ou n’est pas valide. Réessayez.",
"proxyManualSignInRequired": "L’authentification a échoué. Essayez de vous connecter manuellement.",
"sidebarSyncingChats": "Synchronisation des chats",
"sidebarSyncingNotes": "Synchronisation des notes",
"sidebarFinishingSync": "Finalisation de la synchronisation",
"loadMermaidPreview": "Charger l’aperçu Mermaid",
"loadChartPreview": "Charger l’aperçu du graphique",
"loadPdfPreview": "Charger l’aperçu du PDF : {title}",
"ollamaCloudDefaultName": "Ollama Cloud",
"ollamaCloudBaseUrlHint": "https://ollama.com",
"ollamaCloudBaseUrlDescription": "Utilisez https://ollama.com avec une clé API pour Ollama Cloud.",
"ollamaModelLoaded": "Chargé",
"ollamaModelActions": "Mémoire du modèle",
"ollamaModelActionsDescription": "Gérez ce modèle dans la RAM ou la VRAM d’Ollama.",
"ollamaLoadModel": "Charger le modèle",
"ollamaLoadModelDescription": "Chargez-le maintenant pour accélérer la première réponse.",
"ollamaUnloadModel": "Décharger le modèle",
"ollamaUnloadModelDescription": "Libérez sa RAM ou sa VRAM. Il se recharge automatiquement au prochain message.",
"ollamaUnloadModelConfirmTitle": "Décharger {name} ?",
"ollamaUnloadModelConfirmMessage": "Cette action libère la RAM ou la VRAM du modèle. Ollama le rechargera automatiquement lorsque vous enverrez un message.",
"ollamaKeepAlive": "Maintien en mémoire",
"ollamaKeepAliveDescription": "Appliqué à ce modèle après chaque requête de chat.",
"ollamaKeepAliveServerDefault": "Valeur par défaut du serveur",
"ollamaKeepAliveFiveMinutes": "5 minutes",
"ollamaKeepAliveThirtyMinutes": "30 minutes",
"ollamaKeepAliveOneHour": "1 heure",
"ollamaKeepAliveAlways": "Toujours chargé",
"ollamaKeepAliveImmediate": "Décharger après chaque réponse",
"ollamaKeepAliveCustom": "Personnalisé",
"ollamaKeepAliveCustomHint": "Exemples : 10m, 24h, 3600, -1 ou 0",
"ollamaKeepAliveInvalid": "Utilisez des secondes ou une durée telle que 10m ou 24h.",
"ollamaModelLoadedMessage": "{name} est chargé.",
"ollamaModelUnloadedMessage": "{name} a été déchargé.",
"ollamaModelActionFailed": "Impossible de mettre à jour l’état de mémoire de ce modèle.",
"ollamaThinking": "Raisonnement",
"ollamaCloudModelActionsDescription": "Configurez la manière dont ce modèle Ollama Cloud répond.",
"ollamaThinkingDescription": "Choisissez le niveau de raisonnement du modèle. Les niveaux disponibles dépendent du modèle.",
"ollamaThinkingAutomatic": "Automatique",
"ollamaThinkingDisabled": "Désactivé",
"ollamaThinkingLow": "Faible",
"ollamaThinkingMedium": "Moyen",
"ollamaThinkingHigh": "Élevé",
"ollamaThinkingMaximum": "Maximal",
"releaseNotesSupportPromptHeading": "Conduit vous plaît ?",
"releaseNotesSupportPromptMessage": "Un court avis aide davantage de personnes à découvrir Conduit. Un petit pourboire m'aide à continuer de le développer. Les deux comptent beaucoup.",
"directConnectProvider": "Connecter le fournisseur",
"directConnectProviderTitle": "Connecter un fournisseur",
"directConnectionEnabledSubtitle": "Afficher les modèles de cette connexion dans le sélecteur de modèles.",
"directConnectionDetailsTitle": "Détails de connexion",
"directBaseUrlDescription": "Incluez le préfixe d’API attendu par le fournisseur, généralement /v1.",
"directConfiguredReplacePlaceholder": "Configurée, saisissez une valeur pour la remplacer",
"directApiKeyPlaceholder": "Saisissez la clé API",
"hermesOnboardingFailed": "Impossible de terminer la configuration de Hermes. Vérifiez le stockage sécurisé et réessayez.",
"hermesConnectionDetailsTitle": "Détails de connexion",
"hermesMemoryKeyShortDescription": "Associe la mémoire à long terme de l’agent à votre identité. Laissez ce champ vide pour que Conduit crée une clé.",
"hermesConnectAction": "Connecter Hermes",
"hermesToolCount": "{count, plural, =1{1 outil} other{{count} outils}}",
"@hermesToolCount": {"placeholders":{"count":{"type":"int"}}},
"hermesNoToolsets": "Aucun ensemble d’outils signalé par le serveur.",
"hermesToolsetsNewSessions": "Les modifications s'appliquent aux nouvelles sessions Hermes. Les conversations existantes conservent leurs outils actuels.",
"hermesServerStatusTitle": "État du serveur",
"hermesNoServerStatus": "Aucun état signalé par le serveur.",
"hermesLegacySessionToken": "Ancien jeton de session",
"hermesLegacySessionTokenHint": "Collez le jeton de session Hermes",
"hermesGatewayStopped": "Le tableau de bord Hermes est en ligne, mais Desktop Gateway est arrêté. Démarrez la passerelle sur le serveur Hermes, puis réessayez.",
"hermesProfile": "Profil Hermes",
"hermesProfileLabel": "Profil",
"hermesRefreshProfiles": "Actualiser les profils",
"hermesDesktopAuthentication": "Authentification de bureau",
"hermesDashboardAuthHelp": "Ouvrez le tableau de bord Hermes dans la fenêtre de connexion, puis revenez ici pour tester la connexion.",
"hermesAuthLegacy": "Ancien",
"hermesAuthNative": "Natif",
"hermesAuthDashboard": "Tableau de bord",
"hermesNativeSignIn": "Se connecter avec Hermes",
"hermesDashboardSignIn": "Ouvrir la connexion au tableau de bord",
"hermesGatewayAccessHeaders": "En-têtes d'accès de la passerelle",
"hermesGatewayAccessHeadersHelp": "En-têtes facultatifs pour un tableau de bord Hermes protégé.",
"hermesDesktopGateway": "Desktop Gateway",
"hermesReloadSkills": "Recharger les compétences",
"hermesNoInstalledSkills": "Aucune compétence installée",
"hermesMcpServers": "Serveurs MCP",
"hermesSignOut": "Se déconnecter de Hermes",
"hermesActionFailed": "L'action Hermes a échoué.",
"hermesToolsetUpdateFailed": "Échec de la mise à jour de l’ensemble d’outils Hermes.",
"hermesJobStateLabel": "État",
"hermesJobDeliveryLabel": "Livraison",
"hermesJobLastLabel": "Dernière",
"hermesJobNextLabel": "Suivante",
"hermesJobRunHistory": "Historique des exécutions",
"hermesApprovalAllowOnce": "Autoriser une fois",
"hermesApprovalAllowSession": "Autoriser pour la session",
"hermesApprovalAlwaysAllow": "Toujours autoriser",
"hermesClarificationTitle": "Hermes a besoin d'une clarification",
"hermesSudoTitle": "Hermes a besoin d'un accès sudo",
"hermesSecretTitle": "Hermes a besoin d'un secret",
"hermesMcpSetupTitle": "Hermes a besoin d'une configuration MCP",
"hermesResponseSent": "Réponse envoyée",
"hermesNotNow": "Pas maintenant",
"hermesSetUp": "Configurer",
"hermesSensitiveResponse": "Réponse sensible",
"hermesResponse": "Réponse",
"hermesSendResponse": "Envoyer la réponse",
"hermesFastTier": "Niveau rapide",
"hermesFastTierOn": "Activé",
"hermesFastTierOff": "Désactivé",
"hermesTurnSteer": "Orienter",
"hermesTurnSendNext": "Envoyer le suivant",
"hermesTurnControlsUnsupported": "Mettez Hermes à jour pour activer les contrôles de tour sécurisés.",
"sidebarHermesTab": "Hermes",
"markdownShowMoreLines": "{count, plural, =1{Afficher 1 ligne de plus} other{Afficher {count} lignes de plus}}",
"@markdownShowMoreLines": {"placeholders":{"count":{"type":"int"}}},
"markdownShowLess": "Afficher moins",
"voiceBargeIn": "Interruption",
"voiceBargeInDescription": "Continue à écouter pendant que l'assistant parle pour pouvoir l'interrompre.",
"voiceCallSpeakerOn": "Activer le haut-parleur",
"voiceCallSpeakerOff": "Désactiver le haut-parleur",
"channelEmptyHint": "Créez un canal pour démarrer une conversation de groupe.",
"colorScheme": "Apparence",
"disabled": "Désactivé",
"enabled": "Activé",
"hermesJobAdminDisabled": "La gestion des tâches est désactivée sur ce serveur. Les planifications sont en lecture seule.",
"hermesJobCreateFailed": "Impossible de créer la tâche planifiée.",
"hermesJobCreated": "Tâche planifiée créée.",
"hermesJobDelete": "Supprimer la tâche planifiée",
"hermesJobDeleteFailed": "Impossible de supprimer la tâche planifiée.",
"hermesJobDeleteMessage": "Supprimer cette tâche planifiée ? Cette action est irréversible.",
"hermesJobDeleteTitle": "Supprimer la tâche",
"hermesJobDeleted": "Tâche planifiée supprimée.",
"hermesJobEdit": "Modifier la tâche planifiée",
"hermesJobEditorEditTitle": "Modifier la tâche",
"hermesJobEmptyMessage": "Créez une tâche planifiée pour exécuter automatiquement une invite.",
"hermesJobLoadFailed": "Impossible de charger les tâches planifiées. Vérifiez la connexion à Hermes et réessayez.",
"hermesJobNameHint": "Résumé quotidien",
"hermesJobNew": "Nouvelle tâche planifiée",
"hermesJobPauseFailed": "Impossible de suspendre la tâche planifiée.",
"hermesJobPaused": "En pause",
"hermesJobPausedSuccess": "Tâche planifiée suspendue.",
"hermesJobPromptHint": "Que doit faire l’agent à chaque exécution ?",
"hermesJobPromptLabel": "Invite",
"hermesJobResumeFailed": "Impossible de reprendre la tâche planifiée.",
"hermesJobResumed": "Tâche planifiée reprise.",
"hermesJobRunFailed": "Impossible d’exécuter la tâche planifiée.",
"hermesJobRunNow": "Exécuter maintenant",
"hermesJobScheduleHelp": "Utilisez cron (0 9 * * *), un intervalle (every 2h), un délai (30m) ou une date et une heure ISO.",
"hermesJobScheduleHint": "0 9 * * * ou every 2h",
"hermesJobScheduleInvalid": "Saisissez une durée, un intervalle, une date, une heure ou une planification cron valide.",
"hermesJobScheduleLabel": "Planification",
"hermesJobStarted": "Tâche planifiée démarrée.",
"hermesJobTooLong": "Utilisez {count} caractères au maximum",
"hermesJobUpdateFailed": "Impossible de mettre à jour la tâche planifiée.",
"hermesJobUpdated": "Tâche planifiée mise à jour.",
"hermesJobsEmptyManageHint": "Utilisez Gérer pour créer une invite planifiée.",
"hermesJobsManageDescription": "Créez, modifiez, exécutez ou supprimez des planifications.",
"hermesJobsSheetReview": "Consultez les heures d’exécution et suspendez des planifications.",
"hermesJobsSheetSubtitle": "Suspendez des planifications ou consultez la prochaine exécution.",
"hermesLastStatus": "Dernier état : {status}",
"hermesMemoryKeyFieldLabel": "Clé de mémoire",
"hermesSessionDeleteFailed": "Impossible de supprimer la conversation.",
"hermesSessionDeleteMessage": "Supprimer cette conversation Hermes ? Cette action est irréversible.",
"hermesSessionDeleteTitle": "Supprimer la conversation",
"hermesSessionFork": "Dupliquer",
"hermesSessionForkFailed": "Impossible de dupliquer la conversation.",
"hermesSessionLoadFailed": "Impossible de charger cette conversation. Vérifiez la connexion et réessayez.",
"hermesSessionNameHint": "Nom de la conversation",
"hermesSessionRenameFailed": "Impossible de renommer la conversation.",
"hermesSessionRenameTitle": "Renommer la conversation",
"hermesSessionUntitled": "Conversation sans titre",
"notificationRequiresMaster": "Activez les notifications pour modifier ce réglage.",
"notificationRequiresSound": "Activez le son pour modifier ce réglage.",
"passwordChangeDescription": "Mettre à jour le mot de passe du compte",
"profileDetailsSummary": "Biographie, genre et date de naissance",
"directMcpServersTitle": "MCP servers", "directMcpEmptyTitle": "No MCP servers yet", "directMcpReachabilityHelp": "Add a Streamable HTTP endpoint that this phone can reach.", "directMcpEditorTitle": "Edit MCP server", "directMcpAddTitle": "Add MCP server", "directMcpName": "Server name", "directMcpEndpoint": "Streamable HTTP endpoint", "directMcpBearerToken": "Bearer token (optional)", "directMcpCustomHeaders": "Custom headers (optional)", "directMcpCustomHeadersHint": "One per line: Name: Value", "directMcpTestConnection": "Test connection", "directMcpTesting": "Testing connection…", "directMcpTestSucceeded": "Connected — {count} tools found.", "directMcpTestFailed": "Could not list tools from this MCP server.", "directMcpSaveFailed": "Could not save this MCP server.", "directMcpLoadFailed": "Could not load MCP servers from secure storage.", "directMcpMissing": "This MCP server no longer exists.", "directMcpCredentialTransferTitle": "Use credentials with new server?", "directMcpCredentialTransferMessage": "This sends the bearer token and custom headers to the new server. Continue only if you trust it. Cancel saves the server without credentials.", "directMcpCredentialTransferConfirm": "Use credentials", "directMcpDeleteTitle": "Delete MCP server?", "directMcpDeleteMessage": "This removes {name} and its credentials from this device.", "directMcpDeleteFailed": "Could not delete this MCP server.", "directMcpAuthMode": "Authentication", "directMcpAuthNone": "None", "directMcpAuthBearer": "Bearer token", "directMcpAuthOAuth": "OAuth", "directMcpOAuthConnect": "Connect in browser", "directMcpOAuthReconnect": "Reconnect in browser", "directMcpOAuthDisconnect": "Disconnect OAuth", "directMcpOAuthPending": "Waiting for authorization in the browser…", "directMcpOAuthConnected": "OAuth connected.", "directMcpOAuthConnectionDetails": "Connected to {issuerHost} · {scopes}", "directMcpOAuthNoScopes": "No scopes reported", "directMcpOAuthConnectFailed": "Could not connect this MCP server with OAuth.", "directMcpOAuthDisconnectFailed": "Could not disconnect OAuth from this MCP server.", "directMcpApprovalTitle": "Tool approval", "directMcpApprovalAllowOnce": "Allow once", "directMcpApprovalAllowSession": "Allow for session", "directMcpApprovalAllowAlways": "Always allow", "directMcpApprovalAlwaysTitle": "Always allow this tool?", "directMcpApprovalAlwaysMessage": "{serverName} will be allowed to run {toolName} without asking again. The approval is revoked automatically if the tool schema changes.", "@directMcpApprovalAlwaysMessage": {"placeholders":{"serverName":{"type":"String"},"toolName":{"type":"String"}}}, "directMcpApprovalSaveFailed": "Could not remember this approval. You can retry or choose another option.", "directMcpApprovalDeny": "Deny", "directMcpApprovalAllowed": "Allowed once", "directMcpApprovalAllowedSession": "Allowed for session", "directMcpApprovalAllowedAlways": "Always allowed", "directMcpApprovalDenied": "Denied", "directMcpApprovalExpired": "Approval expired", "directMcpRememberedApprovalsTitle": "Always allowed tools", "directMcpRememberedApprovalsSubtitle": "These exact tools can run without asking while their server and input schema remain unchanged.", "directMcpRememberedApprovalRevoke": "Revoke", "directMcpRememberedApprovalsRevokeAll": "Revoke all", "directMcpRememberedApprovalRevokeFailed": "Could not revoke the remembered approval."
,"directMcpContentAction": "MCP content"
,"directMcpContentTitle": "MCP content"
,"directMcpContentServer": "MCP server"
,"directMcpContentSearch": "Search prompts and resources"
,"directMcpContentPrompts": "Prompts"
,"directMcpContentResources": "Resources"
,"directMcpContentEmpty": "This server has no prompts or resources."
,"directMcpContentNoMatches": "No matching prompts or resources."
,"directMcpContentLoadFailed": "Could not load content from this MCP server."
,"directMcpContentRefresh": "Refresh MCP content"
,"directMcpContentPreviewTitle": "Preview"
,"directMcpContentInsert": "Insert"
,"directMcpContentPromptHeading": "MCP prompt from {serverName}: {promptName}"
,"@directMcpContentPromptHeading": {"placeholders":{"serverName":{"type":"String"},"promptName":{"type":"String"}}}
,"directMcpContentResourceHeading": "MCP resource from {serverName}: {resourceUri}"
,"@directMcpContentResourceHeading": {"placeholders":{"serverName":{"type":"String"},"resourceUri":{"type":"String"}}}
,"directMcpContentRoleUser": "User"
,"directMcpContentRoleAssistant": "Assistant"
,"directMcpContentRequestFailed": "Could not load this MCP content. Try again."
,"directMcpContentUnsupported": "This item is binary or unsupported. Choose a text prompt or text resource."
,"directMcpContentChanged": "This item changed on the server. Refresh and choose it again."
,"directMcpContentTooLarge": "This content is too large to insert."
,"directMcpContentComposerTooLarge": "The draft and this content exceed the 256 KiB message limit. Shorten the draft or content and try again."
,"directMcpContentLoading": "Loading MCP content…"
,"directMcpInsecureCredentialsTitle": "Send credentials without encryption?"
,"directMcpInsecureCredentialsMessage": "This server uses unencrypted HTTP. Your bearer token, OAuth token, and custom headers could be read or changed on the network."
,"directMcpInsecureCredentialsConfirm": "Send without encryption"
,"hermesSessionTooLarge": "Cette conversation est trop volumineuse pour être chargée sur cet appareil."
,"hermesSessionNotFound": "Cette conversation n'est plus disponible sur le serveur Hermes."
,"hermesSessionLoadFailedDetail": "Impossible de charger cette conversation : {detail}"
,"@hermesSessionLoadFailedDetail": {
"placeholders": {
"detail": {
"type": "String"
}
}
}
,"directBearerDescription": "Envoie l'identifiant dans l'en-tête Authorization: Bearer. La plupart des serveurs compatibles OpenAI (llama.cpp, vLLM, LM Studio, Ollama) l'attendent ainsi."
,"directApiKeyHeaderAzureOnlyDescription": "Envoie l'identifiant dans l'en-tête api-key. À utiliser uniquement pour Azure OpenAI ; les autres serveurs compatibles OpenAI attendent un jeton Bearer."
}