mirror of
https://github.com/cogwheel0/conduit.git
synced 2026-10-19 01:37:03 +00:00
Some checks are pending
L10n / l10n (push) Waiting to run
* 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.
3269 lines
150 KiB
Text
3269 lines
150 KiB
Text
{
|
||
"@@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."
|
||
}
|