libre-webui 0.34.2 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/backend/dist/persistence/extensionTypes.d.ts +2 -0
- package/backend/dist/persistence/extensionTypes.d.ts.map +1 -1
- package/backend/dist/persistence/extensionTypes.js.map +1 -1
- package/backend/dist/persistence/postgresExtensionRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/postgresExtensionRepositories.js +26 -0
- package/backend/dist/persistence/postgresExtensionRepositories.js.map +1 -1
- package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteExtensionRepositories.js +28 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -1
- package/backend/dist/platform/jobs/durableJobRuntime.d.ts.map +1 -1
- package/backend/dist/platform/jobs/durableJobRuntime.js +3 -1
- package/backend/dist/platform/jobs/durableJobRuntime.js.map +1 -1
- package/backend/dist/platform/storage/s3EncryptedBlobStore.js +1 -1
- package/backend/dist/platform/storage/s3EncryptedBlobStore.js.map +1 -1
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +49 -0
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/plugins.d.ts.map +1 -1
- package/backend/dist/routes/plugins.js +29 -2
- package/backend/dist/routes/plugins.js.map +1 -1
- package/backend/dist/services/calendarService.js +1 -1
- package/backend/dist/services/calendarService.js.map +1 -1
- package/backend/dist/services/chatService.d.ts.map +1 -1
- package/backend/dist/services/chatService.js +5 -2
- package/backend/dist/services/chatService.js.map +1 -1
- package/backend/dist/services/documentService.d.ts.map +1 -1
- package/backend/dist/services/documentService.js +4 -5
- package/backend/dist/services/documentService.js.map +1 -1
- package/backend/dist/services/followUpService.js +1 -1
- package/backend/dist/services/followUpService.js.map +1 -1
- package/backend/dist/services/galleryService.d.ts.map +1 -1
- package/backend/dist/services/galleryService.js +5 -2
- package/backend/dist/services/galleryService.js.map +1 -1
- package/backend/dist/services/legacyCiphertextIntegrity.js +2 -2
- package/backend/dist/services/legacyCiphertextIntegrity.js.map +1 -1
- package/backend/dist/services/pluginCacheInvalidation.d.ts.map +1 -1
- package/backend/dist/services/pluginCacheInvalidation.js +3 -2
- package/backend/dist/services/pluginCacheInvalidation.js.map +1 -1
- package/backend/dist/services/pluginUsageService.d.ts +5 -1
- package/backend/dist/services/pluginUsageService.d.ts.map +1 -1
- package/backend/dist/services/pluginUsageService.js +37 -14
- package/backend/dist/services/pluginUsageService.js.map +1 -1
- package/backend/dist/services/thinkingSummaryService.d.ts +48 -0
- package/backend/dist/services/thinkingSummaryService.d.ts.map +1 -0
- package/backend/dist/services/thinkingSummaryService.js +170 -0
- package/backend/dist/services/thinkingSummaryService.js.map +1 -0
- package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeService.js +5 -2
- package/backend/dist/services/workRuntimeService.js.map +1 -1
- package/backend/dist/services/workTaskService.d.ts.map +1 -1
- package/backend/dist/services/workTaskService.js +5 -2
- package/backend/dist/services/workTaskService.js.map +1 -1
- package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreamAdapter.js +2 -7
- package/backend/dist/utils/pluginStreamAdapter.js.map +1 -1
- package/backend/package.json +1 -1
- package/bin/cli.js +0 -1
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/assets/index-B8CRGFpq.css +1 -0
- package/frontend/dist/assets/index-D34e2tgI.js +92 -0
- package/frontend/dist/index.html +17 -17
- package/frontend/dist/js/{ArtifactContainer-CQjqR9G1.js → ArtifactContainer-DxNTcOvH.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-DbbqglMU.js → ArtifactDemoPage-Bzb07rM8.js} +1 -1
- package/frontend/dist/js/{ArtifactSandboxFrame-DI2b9BW5.js → ArtifactSandboxFrame-DP_4rZwQ.js} +1 -1
- package/frontend/dist/js/{ArtifactSlideOutPanel-B_UX92CK.js → ArtifactSlideOutPanel-DkuFYmTf.js} +1 -1
- package/frontend/dist/js/{AutomationModal-CNiy1Dxm.js → AutomationModal-Dh_l3_KV.js} +1 -1
- package/frontend/dist/js/{AutomationsPage-CeAsldk_.js → AutomationsPage-BZqRE_iS.js} +1 -1
- package/frontend/dist/js/{AvatarUpload-xCWQm3_w.js → AvatarUpload-CM537pyV.js} +1 -1
- package/frontend/dist/js/{CalendarPage-Cwk0X00z.js → CalendarPage-CNovVIyJ.js} +1 -1
- package/frontend/dist/js/{ChannelsPage-BG3n4ElV.js → ChannelsPage-B24ElGbY.js} +1 -1
- package/frontend/dist/js/ChatPage-YD9iS6Kh.js +14 -0
- package/frontend/dist/js/{ConnectModels-D7ZTGihA.js → ConnectModels-Dwih31mg.js} +1 -1
- package/frontend/dist/js/{EvaluationsPage-C795TI_6.js → EvaluationsPage-fd4Bzfet.js} +1 -1
- package/frontend/dist/js/{FirstTimeSetup-C4C5GLjW.js → FirstTimeSetup-Bf6VF-W2.js} +1 -1
- package/frontend/dist/js/{GalleryPage-DVWl3LaC.js → GalleryPage-BiHsiQXa.js} +1 -1
- package/frontend/dist/js/HomePage-QmyVNWCW.js +1 -0
- package/frontend/dist/js/LanguageSwitcher-DjCF4n-n.js +1 -0
- package/frontend/dist/js/{LibreClawPage-OD6iZtiy.js → LibreClawPage-BgWhUlqz.js} +1 -1
- package/frontend/dist/js/{NotesPage-rqL0zS8z.js → NotesPage-Di2Bg-aA.js} +1 -1
- package/frontend/dist/js/{PersonasPage-Babix8IA.js → PersonasPage-BdJO364O.js} +1 -1
- package/frontend/dist/js/PluginUsagePage-Cg8eqMsE.js +1 -0
- package/frontend/dist/js/RichMessageContent-C8qt0Aa7.js +1 -0
- package/frontend/dist/js/{RichMessageContent-CcKn_kcQ.js → RichMessageContent-CUbm43PQ.js} +1 -1
- package/frontend/dist/js/{SettingsModal-CXU60RIf.js → SettingsModal-BxEuHSvE.js} +3 -3
- package/frontend/dist/js/{ShareDialog-CnU4ptx7.js → ShareDialog-DTGlwdvx.js} +1 -1
- package/frontend/dist/js/{SystemPage-BzpTjdQY.js → SystemPage-wOjktp6W.js} +1 -1
- package/frontend/dist/js/UserManagementPanel-KLgquEZv.js +1 -0
- package/frontend/dist/js/{WhatsNewModal-TuDrBWKj.js → WhatsNewModal-B-8T7RFf.js} +1 -1
- package/frontend/dist/js/{WorkPage-DCeqm0BN.js → WorkPage-5YiyDil1.js} +2 -2
- package/frontend/dist/js/api-C4tAvZc2.js +14 -0
- package/frontend/dist/js/api-vKAlaBw8.js +1 -0
- package/frontend/dist/js/{appNavigation-DySHcEGS.js → appNavigation-DXgSn83Q.js} +1 -1
- package/frontend/dist/js/{appStore-DrTsJPfh.js → appStore-CmY86Gzn.js} +2 -2
- package/frontend/dist/js/appVersion-Nzg0IWED.js +1 -0
- package/frontend/dist/js/ar-DtoEKcvZ.js +2 -0
- package/frontend/dist/js/authStore-Cq6ASMHJ.js +1 -0
- package/frontend/dist/js/{authStore-CieFdk4S.js → authStore-DzKajX63.js} +3 -3
- package/frontend/dist/js/bn-DP2AKHj6.js +2 -0
- package/frontend/dist/js/chatStore-Bp-tan20.js +3 -0
- package/frontend/dist/js/{composerStyles-BjJm_BgC.js → composerStyles-nggBKICR.js} +1 -1
- package/frontend/dist/js/{config-D7WLbWrW.js → config-Cg4OZeHO.js} +1 -1
- package/frontend/dist/js/cs-BYiysC42.js +2 -0
- package/frontend/dist/js/da-CjvZwl21.js +2 -0
- package/frontend/dist/js/de-BKI2vbyb.js +2 -0
- package/frontend/dist/js/es-Bd_rGARS.js +2 -0
- package/frontend/dist/js/{evaluationsApi-Dn-WNzzH.js → evaluationsApi-BKkwm4WQ.js} +1 -1
- package/frontend/dist/js/fr-MJPX-cfk.js +2 -0
- package/frontend/dist/js/hi-i1pFIKuq.js +2 -0
- package/frontend/dist/js/id-Cx2UmvDs.js +2 -0
- package/frontend/dist/js/is-BhoLtzfO.js +2 -0
- package/frontend/dist/js/it-DBSOFUQF.js +2 -0
- package/frontend/dist/js/ja-tt90GfPo.js +2 -0
- package/frontend/dist/js/ko-CuQjGSbu.js +2 -0
- package/frontend/dist/js/{messageCodeStyles-C0pbLr0L.js → messageCodeStyles-CNMdqZf-.js} +1 -1
- package/frontend/dist/js/ms-B1IgAOxc.js +2 -0
- package/frontend/dist/js/nl-KC1T6ODd.js +2 -0
- package/frontend/dist/js/pl-BELaieBr.js +2 -0
- package/frontend/dist/js/pt-BcNdTKuY.js +2 -0
- package/frontend/dist/js/ru-BY36Y8EF.js +2 -0
- package/frontend/dist/js/sv-Df0qJdhZ.js +2 -0
- package/frontend/dist/js/{teamEventStream-CI_GSbae.js → teamEventStream-CjWlYJh3.js} +1 -1
- package/frontend/dist/js/th-BQogE70C.js +2 -0
- package/frontend/dist/js/tr-CE2ShLd6.js +2 -0
- package/frontend/dist/js/ui-DzVF9vZ5.js +2 -0
- package/frontend/dist/js/uk-DuVduqlS.js +2 -0
- package/frontend/dist/js/useChat-DubO9MWm.js +10 -0
- package/frontend/dist/js/vi-DABvOoXL.js +2 -0
- package/frontend/dist/js/workApi-mPLHmuyT.js +1 -0
- package/frontend/dist/js/{workApi-C-WfyZSs.js → workApi-oO8srJWT.js} +3 -3
- package/frontend/dist/js/zh-D2B1N9vW.js +2 -0
- package/package.json +2 -2
- package/frontend/dist/assets/index-C59a0tht.css +0 -1
- package/frontend/dist/assets/index-Cyi10ekV.js +0 -43
- package/frontend/dist/js/ChatPage-wSRfAOeh.js +0 -14
- package/frontend/dist/js/HomePage-BljB9ZMN.js +0 -1
- package/frontend/dist/js/LanguageSwitcher-BuS3i6u5.js +0 -1
- package/frontend/dist/js/PluginUsagePage-CudDkMxy.js +0 -1
- package/frontend/dist/js/RichMessageContent-B-U0EcyW.js +0 -1
- package/frontend/dist/js/UserManagementPanel-pbtLqF8X.js +0 -1
- package/frontend/dist/js/api-BIVGtaZy.js +0 -1
- package/frontend/dist/js/api-CgnEj5Jc.js +0 -14
- package/frontend/dist/js/appVersion-CAidQlBP.js +0 -1
- package/frontend/dist/js/ar-DNI77Stn.js +0 -2
- package/frontend/dist/js/authStore-GaOHAAsM.js +0 -1
- package/frontend/dist/js/bn-u6oyZr4U.js +0 -2
- package/frontend/dist/js/chatStore-BvZkd8Un.js +0 -3
- package/frontend/dist/js/cs-BIkJ6jwb.js +0 -2
- package/frontend/dist/js/da-DV3V6XJ_.js +0 -2
- package/frontend/dist/js/de-DdcTQ-vn.js +0 -2
- package/frontend/dist/js/es-Cw-ozFaX.js +0 -2
- package/frontend/dist/js/fr-Y2NfnlYR.js +0 -2
- package/frontend/dist/js/hi-BKU62_1Y.js +0 -2
- package/frontend/dist/js/id-q6wo4InR.js +0 -2
- package/frontend/dist/js/is-_B6QblCu.js +0 -2
- package/frontend/dist/js/it-NUupXhzK.js +0 -2
- package/frontend/dist/js/ja-BUvl9RXq.js +0 -2
- package/frontend/dist/js/ko-df4leR83.js +0 -2
- package/frontend/dist/js/ms-CN-7Q9S2.js +0 -2
- package/frontend/dist/js/nl-OEm4uNIo.js +0 -2
- package/frontend/dist/js/pl-B9pHpjg7.js +0 -2
- package/frontend/dist/js/pt-D3uaEKud.js +0 -2
- package/frontend/dist/js/ru-z9H07lhi.js +0 -2
- package/frontend/dist/js/sv-GkQDA4wx.js +0 -2
- package/frontend/dist/js/th-0hzCkDzt.js +0 -2
- package/frontend/dist/js/tr-CZDobfHQ.js +0 -2
- package/frontend/dist/js/ui-CgokQU6I.js +0 -2
- package/frontend/dist/js/uk-BwspIPCI.js +0 -2
- package/frontend/dist/js/useChat-DIGuMg5j.js +0 -10
- package/frontend/dist/js/vi-Dipdv5ta.js +0 -2
- package/frontend/dist/js/workApi-CApikuye.js +0 -1
- package/frontend/dist/js/zh-CgdWmtP_.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={common:{loading:`Chargement...`,save:`Enregistrer`,saving:`Enregistrement...`,cancel:`Annuler`,delete:`Supprimer`,edit:`Modifier`,close:`Fermer`,back:`Retour`,next:`Suivant`,confirm:`Confirmer`,error:`Erreur`,success:`Succès`,warning:`Avertissement`,or:`ou`,optional:`optionnel`,enabled:`Activé`,disabled:`Désactivé`,on:`Activé`,off:`Désactivé`,yes:`Oui`,no:`Non`,search:`Rechercher`,noResults:`Aucun résultat trouvé`,retry:`Réessayer`,refresh:`Actualiser`,download:`Télécharger`,upload:`Envoyer`,export:`Exporter`,import:`Importer`,reset:`Réinitialiser`,apply:`Appliquer`,clear:`Effacer`,all:`Tout`,none:`Aucun`,default:`Par défaut`,custom:`Personnalisé`,remove:`Supprimer`,home:`Accueil`,more:`Plus`},brand:{name:`Libre WebUI`,shortName:`Libre`},appInitialization:{ollamaUnavailable:`Le service Ollama n’est pas disponible. Les modèles de plugins peuvent toujours être utilisés.`,backendConnectionFailed:`Échec de la connexion au service backend`},auth:{login:{title:`Bon retour`,subtitle:`Connectez-vous à votre compte pour continuer`,username:`Nom d'utilisateur`,usernamePlaceholder:`Entrez votre nom d'utilisateur`,password:`Mot de passe`,passwordPlaceholder:`Entrez votre mot de passe`,signIn:`Se connecter`,signingIn:`Connexion en cours...`,noAccount:`Vous n'avez pas de compte ?`,signUpHere:`Inscrivez-vous ici`,loginSuccess:`Connexion réussie !`,loginFailed:`Échec de la connexion`,checkCredentials:`Échec de la connexion. Veuillez vérifier vos identifiants.`,approvalPending:`Votre compte est en attente d'approbation par un administrateur.`,enterBoth:`Veuillez entrer le nom d'utilisateur et le mot de passe`,githubSuccess:`Connexion GitHub réussie !`,githubFailed:`Échec de l'authentification GitHub`,githubVerifyFailed:`Échec de la vérification de l'authentification GitHub`,verificationFailed:`La vérification de sécurité a échoué. Actualisez la page et réessayez.`},signup:{title:`Créer un compte`,subtitle:`Inscrivez-vous pour créer votre compte`,username:`Nom d'utilisateur`,usernamePlaceholder:`Choisissez un nom d'utilisateur`,email:`Email`,emailPlaceholder:`votre@email.com`,password:`Mot de passe`,passwordPlaceholder:`Choisissez un mot de passe`,confirmPassword:`Confirmer le mot de passe`,confirmPasswordPlaceholder:`Confirmez votre mot de passe`,createAccount:`Créer un compte`,creatingAccount:`Création du compte...`,hasAccount:`Vous avez déjà un compte ?`,signInHere:`Connectez-vous ici`,signupSuccess:`Compte créé avec succès !`,approvalPending:`Inscription reçue. Un administrateur doit approuver votre compte.`,awaitingApproval:`En attente d'approbation`,awaitingApprovalDescription:`Votre compte a été créé, mais un administrateur doit l'activer avant que vous puissiez vous connecter.`,backToSignIn:`Retour à la connexion`,signupFailed:`Échec de l'inscription`,tryAgain:`Échec de l'inscription. Veuillez réessayer.`,usernameRequired:`Le nom d'utilisateur et le mot de passe sont requis`,passwordMismatch:`Les mots de passe ne correspondent pas`},logout:{button:`Déconnexion`,success:`Déconnexion réussie`},oauth:{continueWith:`Continuer avec {{provider}}`,connectingTo:`Connexion à {{provider}}...`,github:`GitHub`,huggingFace:`Hugging Face`,loginSuccess:`Connexion OAuth réussie !`,completionFailed:`Échec de la finalisation de l’authentification OAuth`,verificationFailed:`Échec de la vérification de l’authentification OAuth`,authenticationFailed:`Échec de l’authentification OAuth`},checkingAuth:`Vérification de l'authentification...`,welcome:`Bienvenue`,noEmail:`Aucun e-mail fourni`,role:`Rôle`,id:`ID`,userId:`ID utilisateur`,signInDescription:`Connectez-vous avec votre compte GitHub pour continuer`,signInWithGitHub:`Se connecter avec GitHub`,jwtActive:`Authentification JWT active`,jwtDescription:`Authentification JWT avec GitHub OAuth`,github:`GitHub`,provider:`Fournisseur`,tagline:`Votre pile d'IA devrait répondre à vos ordres.`,selfHosted:`Auto-hébergé · Apache 2.0`,highlights:{local:{title:`Local d'abord`,body:`Vos conversations et fichiers restent sur la machine sur laquelle vous l'exécutez.`},providers:{title:`N'importe quel fournisseur`,body:`Modèles locaux via Ollama, plus les fournisseurs distants que vous choisissez d'ajouter.`},work:{title:`Travail isolé`,body:`Donnez à un modèle un espace de travail sandbox avec fichiers, terminal et aperçu.`}},oidc:{defaultProviderName:`Authentification unique`},mfa:{sectionTitle:`Authentification à deux facteurs`,sectionDescription:`Protégez votre compte avec une application d'authentification et des clés d'accès.`,totpTitle:`Application d'authentification`,totpEnabledHint:`Activée. Codes de récupération inutilisés : {{count}}`,totpDisabledHint:`Ajoutez une deuxième étape à la connexion par mot de passe avec un code à usage unique.`,enableButton:`Activer`,disableButton:`Désactiver`,activateButton:`Confirmer`,regenerateCodes:`Nouveaux codes de récupération`,confirmWithCode:`Confirmez avec un code de votre application ou un code de récupération`,enabled:`L'authentification à deux facteurs est activée.`,disabled:`L'authentification à deux facteurs est désactivée.`,invalidCode:`Ce code n'est pas valide.`,enrollFailed:`La configuration n'a pas pu démarrer.`,challengeExpired:`Le défi de connexion a expiré. Veuillez vous reconnecter.`,setupTitle:`Configurer l'authentification à deux facteurs`,setupSubtitle:`Cette instance exige une deuxième étape de connexion. Ajoutez le secret à votre application d'authentification pour continuer.`,verifyTitle:`Saisissez votre code`,verifyHint:`Saisissez le code à 6 chiffres de votre application d'authentification, ou un code de récupération.`,secretHint:`Ajoutez ce secret à votre application d'authentification, puis confirmez avec le code actuel.`,openAuthenticator:`Ouvrir dans l'application d'authentification`,codeLabel:`Code à 6 chiffres`,codeOrRecoveryLabel:`Code ou code de récupération`,codePlaceholder:`123456`,verifyButton:`Vérifier`,backToSignIn:`Retour à la connexion`,recoveryCodesTitle:`Codes de récupération`,recoveryCodesHint:`Conservez ces codes en lieu sûr. Chacun permet une connexion si vous perdez votre application d'authentification.`,recoveryCodesSaved:`J'ai enregistré mes codes de récupération`,recoveryCodesRegenerated:`Nouveaux codes de récupération créés. Les anciens ne fonctionnent plus.`},passkeys:{sectionTitle:`Clés d'accès`,sectionDescription:`Connectez-vous sans mot de passe grâce au verrouillage de votre appareil ou à une clé de sécurité.`,addButton:`Ajouter une clé d'accès`,empty:`Aucune clé d'accès pour le moment.`,unnamed:`Clé d'accès`,createdAt:`Ajoutée`,lastUsedAt:`Dernière utilisation`,removeButton:`Supprimer la clé d'accès`,registered:`Clé d'accès ajoutée.`,registerFailed:`La clé d'accès n'a pas pu être ajoutée.`,removed:`Clé d'accès supprimée.`,removeFailed:`La clé d'accès n'a pas pu être supprimée.`,signInButton:`Se connecter avec une clé d'accès`,signInFailed:`Échec de la connexion par clé d'accès.`}},setup:{welcome:{title:`Bienvenue sur Libre WebUI`,subtitle:`Commencer`,description:`Configurez votre instance Libre WebUI en quelques étapes`,createAdmin:`Créer un compte administrateur`,features:{secure:{title:`Sécurisé et privé`,description:`Vos conversations restent sur votre appareil`},fast:{title:`Rapide et réactif`,description:`Optimisé pour la vitesse et les performances`},openSource:{title:`Open Source`,description:`Logiciel libre et open source`}}},admin:{title:`Créer un compte administrateur`,subtitle:`Configuration administrateur`,description:`Créez le premier compte administrateur pour votre instance Libre WebUI`,usernamePlaceholder:`Entrez le nom d'utilisateur admin`,passwordPlaceholder:`Saisissez un mot de passe (au moins 12 caractères)`,confirmPlaceholder:`Confirmez votre mot de passe`,creating:`Création...`,createAdmin:`Créer l'admin`,success:`Compte administrateur créé avec succès !`,failed:`Échec de la création du compte administrateur`,approvalUnexpected:`L'administrateur initial n'a pas pu être activé. Veuillez réessayer.`,fillAllFields:`Veuillez remplir tous les champs`,note:`Ce sera le compte administrateur principal pour votre instance Libre WebUI`},encryptionKey:{title:`Sauvegardez votre clé de chiffrement`,subtitle:`Important : Sauvegardez cette clé`,description:`Cette clé de chiffrement protège vos données sensibles. Conservez-la en sécurité - vous en aurez besoin si vous devez restaurer votre base de données.`,warning:`Avertissement`,warningText:`Si vous perdez cette clé et devez restaurer votre base de données, vos données chiffrées (clés API, préférences) seront irrécupérables.`,label:`Votre clé de chiffrement`,loading:`Chargement...`,copyToClipboard:`Copier dans le presse-papiers`,copied:`Clé de chiffrement copiée dans le presse-papiers !`,copyFailed:`Échec de la copie de la clé`,envNote:`Cette clé est également sauvegardée dans votre fichier backend/.env sous ENCRYPTION_KEY`,acknowledgment:`J'ai sauvegardé ma clé de chiffrement dans un endroit sécurisé et je comprends que la perdre peut entraîner une perte de données.`,confirmRequired:`Veuillez confirmer que vous avez sauvegardé la clé de chiffrement`,continue:`Continuer vers Libre WebUI`},connectModels:{title:`Connectez vos modèles`,subtitle:`Local ou cloud — choisissez ce que vous utilisez déjà. Vous pourrez toujours changer cela plus tard.`}},chat:JSON.parse(`{"greeting":{"morning":"Bonjour","afternoon":"Bon après-midi","evening":"Bonsoir","night":"Bonne nuit"},"followUp":"Poursuivre","welcome":{"helpToday":"Comment puis-je vous aider aujourd'hui ?","helpTonight":"Comment puis-je vous aider ce soir ?","variety":{"create":{"title":"Qu’allons-nous créer ?","subtitle":"Partez d’une pensée, d’une esquisse ou d’un problème qui résiste."},"explore":{"title":"Par où commencer ?","subtitle":"Apportez cette question qui vous revient sans cesse."},"imagine":{"title":"Qu’imaginez-vous ?","subtitle":"Nous pouvons lui donner forme ensemble."},"focus":{"title":"Qu’est-ce qui mérite votre attention ?","subtitle":"Clarifions la prochaine étape."},"untangle":{"title":"Qu’est-ce qui coince ?","subtitle":"Commencez par me donner la version en vrac."},"momentum":{"title":"Quand vous voulez.","subtitle":"Reprenons une idée, un plan ou un fil resté en suspens."},"open":{"title":"À quoi pensez-vous ?","subtitle":"Petite idée ou projet ambitieux : tout fonctionne."},"challenge":{"title":"Quel problème allons-nous résoudre ?","subtitle":"Dites-moi ce qui ne fonctionne pas encore."},"draft":{"title":"Commençons quelque part.","subtitle":"Pas besoin que ce soit parfait."},"possibility":{"title":"Que pourrait devenir cette idée ?","subtitle":"Montrez-moi la matière brute."},"unexpected":{"title":"Créons quelque chose d’inattendu.","subtitle":"Donnez-moi une contrainte, une ambiance ou une idée encore floue."}}},"input":{"placeholder":"Envoyer un message","messagePlaceholder":"Message...","attachImages":"Joindre des images","attachments":"Pièces jointes et fonctionnalités avancées","sendMessage":"Envoyer le message","stopGeneration":"Arrêter la génération","menu":{"uploadImages":"Téléverser des images","attachDocument":"Joindre un document","attachWebpage":"Joindre une page web","structuredOutput":"Sortie structurée","attach":"Joindre","documentAttached":"Document joint","webpageAttached":"Page web jointe","attachFailed":"Impossible de joindre","attachKnowledge":"Joindre des connaissances","noCollections":"Aucune collection — créez-en une dans Paramètres → Documents"},"voiceInput":"Saisie vocale","voiceStop":"Arrêter l'écoute","transcriptionSource":"Source de reconnaissance vocale","browserSpeech":"Service de reconnaissance vocale du navigateur","providerTranscriptionDisclosure":"Enregistrer et envoyer l’audio à {{provider}} pour transcription","webSearchOn":"Recherche web activée — les réponses utilisent des résultats en direct","webSearchOff":"Chercher sur le web pour ce message","toolsOn":"Outils activés — le modèle peut appeler les outils approuvés","toolsOff":"Laisser le modèle appeler des outils pour ce message","thinkingOn":"Réflexion activée ({{level}})","thinkingOff":"Réfléchir avant de répondre"},"session":{"new":"Nouvelle conversation","work":"Travail","chat":"Chat","private":"Privé","incognito":"Chat incognito","privateMode":"Mode privé","privateDescription":"Cette conversation ne sera pas sauvegardée","privateTooltip":"Démarrer une conversation privée qui ne sera pas sauvegardée","deleteConfirm":"Êtes-vous sûr de vouloir supprimer cette conversation ?","generatingTitle":"Génération du titre","noChats":"Aucune conversation","createFirst":"Créez votre première conversation ci-dessus","chats":"Conversations","renameChat":"Renommer la conversation","openNewTab":"Ouvrir dans un nouvel onglet","pinChat":"Épingler","unpinChat":"Désépingler","deleteChat":"Supprimer la conversation","archiveChat":"Archiver la discussion","groups":{"pinned":"Épinglés","today":"Aujourd'hui","yesterday":"Hier","previous7Days":"7 derniers jours","previous30Days":"30 derniers jours","older":"Plus ancien"},"folder":{"new":"Nouveau dossier","namePlaceholder":"Nom du dossier","move":"Déplacer vers un dossier","remove":"Retirer du dossier","delete":"Supprimer le dossier","deleteConfirm":"Supprimer ce dossier ? Les discussions sont conservées."},"shareChat":"Partager la discussion…"},"persona":{"applied":"Persona appliqué","label":"Persona","loadFailed":"Échec du chargement des détails de la persona","removeFailed":"Échec de la suppression du persona"},"model":{"updated":"Modèle mis à jour","noModels":"Aucun modèle disponible","noModelsDescription":"Aucun modèle disponible. Assurez-vous qu'Ollama est en cours d'exécution et que des modèles sont installés.","pullCommand":"ollama pull llama3.2:3b","noModelsTooltip":"Aucun modèle disponible. Veuillez vous assurer qu'Ollama est en cours d'exécution et que des modèles sont installés.","selectBeforePrivateChat":"Sélectionnez un modèle disponible avant de démarrer une discussion privée","selectBeforeSending":"Sélectionnez un modèle disponible avant d'envoyer","selectBeforeRegenerating":"Sélectionnez un modèle disponible avant de régénérer","connectDescription":"Aucun modèle n'est encore connecté. Choisissez une source ci-dessous — un environnement d'exécution local, votre propre serveur ou une API cloud — et vous discuterez en moins d'une minute."},"footer":{"disclaimer":"Les LLM peuvent faire des erreurs - vérifiez les informations importantes","images":"{{count}} image","images_plural":"{{count}} images","structuredOutput":"Sortie structurée"},"mediaUpload":{"dropImagesHere":"Déposez des images ici ou","supportedFormats":"Formats supportés : JPG, PNG, GIF, WebP (max 10 Mo chacun)","browse":"parcourir","unsupportedFileType":"Type de fichier non pris en charge : {{name}}","maxImagesAllowed":"Maximum de {{count}} images autorisé","imageTooLarge":"L’image {{name}} est trop volumineuse (10 Mo max.)"},"structuredOutput":{"title":"Format de réponse","none":"Aucun (Langage naturel)","noneDescription":"Réponse par défaut en langage naturel","json":"JSON","jsonDescription":"Format JSON structuré","list":"Liste","listDescription":"Tableau d'éléments","summary":"Résumé","summaryDescription":"Résumé du document avec points clés","analysis":"Analyse","analysisDescription":"Analyse structurée avec avantages/inconvénients","custom":"Schéma personnalisé","customDescription":"Définissez votre propre schéma JSON","customSchema":"Schéma JSON personnalisé","schemaPreview":"Aperçu du schéma","applySchema":"Appliquer le schéma","cancel":"Annuler","enabled":"Sortie structurée activée"},"controls":{"title":"Contrôles de la discussion","systemPrompt":"Prompt système","systemPromptPlaceholder":"Instructions valables uniquement pour cette discussion…","advancedParams":"Paramètres avancés","advancedParamsDescription":"Remplacements pour cette discussion. Les champs vides utilisent vos valeurs globales.","fromModel":"du modèle","fromModelHint":"Cette valeur provient des réglages recommandés par le modèle lui-même.","contextCapped":"Contexte limité à {{context}} sur les {{trained}} pour lesquels le modèle a été entraîné, afin qu'il se charge encore.","saved":"Contrôles enregistrés","saveFailed":"Impossible d'enregistrer les contrôles","params":{"temperature":"Température","topP":"Top P","topK":"Top K","minP":"Min P","maxTokens":"Tokens max","repeatPenalty":"Pénalité de répétition","seed":"Graine","contextLength":"Longueur de contexte"},"thinking":"Réflexion","thinkingDescription":"Le temps que le modèle passe à réfléchir avant de répondre. Les modèles sans raisonnement l'ignorent.","compaction":"Compactage du contexte","compactionDescription":"Quand le serveur compacte les longues conversations, cette discussion peut s’en exclure et garder tout son historique.","compactionDefault":"Réglage du serveur","compactionOff":"Désactivé pour cette discussion"},"message":{"sources":"Sources"},"toasts":{"chatCreated":"Nouveau chat créé","createFailed":"Échec de la création de la session","loadFailed":"Échec du chargement des sessions","chatDeleted":"Chat supprimé","deleteFailed":"Échec de la suppression du chat","deleteSessionFailed":"Échec de la suppression de la session","historyCleared":"Tout l'historique de chat a été effacé","historyClearFailed":"Échec de l'effacement de l'historique du chat","titleUpdated":"Titre du chat mis à jour","updateFailed":"Échec de la mise à jour de la session","noValidSession":"Aucune session de chat valide. Veuillez créer ou sélectionner un chat.","sessionNotFound":"Session introuvable ou invalide. Veuillez sélectionner ou créer une session de chat valide.","noModelProvider":"Aucun fournisseur de modèles disponible","modelUnavailable":"Le modèle sélectionné \\"{{model}}\\" n'est pas disponible auprès de {{provider}}. Réactivez ce fournisseur ou sélectionnez un autre modèle.","modelSwitched":"Basculement vers {{model}} (le modèle précédent n'est plus disponible)","modelsLoadFailed":"Échec du chargement des modèles","modelUpdated":"Modèle mis à jour pour le chat actuel","modelUpdateFailed":"Échec de la mise à jour du modèle de session","titlePreviewFallback":"Impossible de générer un titre ; l’aperçu du message sera utilisé","titleGenerated":"Titre du chat généré","titleGenerationFailed":"Échec de la génération du titre du chat","sessionNotFoundRedirect":"Session introuvable. Création d’une nouvelle session...","comparisonError":"{{model}} : {{error}}","generationFailed":"échec de la génération","comparisonFailed":"échec de la comparaison","sendFailed":"Échec de l’envoi du message","noMessageToRegenerate":"Aucun message à régénérer","regenerateFailed":"Échec de la régénération du message","messageNotFound":"Message introuvable","branchSwitched":"Passage à la variante {{number}}","branchSelectFailed":"Échec de la sélection de la branche","editFailed":"Échec de la modification du message","toolDecisionFailed":"La décision de l’outil n’a pas pu être enregistrée"},"documents":{"title":"Documents dans le contexte"},"context":{"title":"Fenêtre de contexte :","full":"{{percent}}% pleine","tokensUsed":"{{used}} / {{budget}} jetons utilisés","tokensUsedNoBudget":"{{used}} jetons utilisés","capped":"limitée depuis {{trained}}"},"queue":{"title":"En attente ({{total}})","moveUp":"Monter","moveDown":"Descendre","updateFailed":"Impossible de mettre à jour le prompt en attente","enqueueFailed":"Impossible de mettre le prompt en attente"},"compare":{"title":"Comparer les modèles","hint":"Répondre avec jusqu'à {{max}} modèles supplémentaires"},"fork":{"action":"Bifurquer à partir d'ici","created":"Discussion dupliquée","failed":"Impossible de bifurquer la discussion","origin":"Bifurquée depuis {{title}}","originUnknown":"une autre discussion"},"sharedReadOnly":"Partagé par {{owner}} — lecture seule"}`),sidebar:{navigation:{chat:`Chat`,models:`Modèles`,personas:`Personas`,imagine:`Imaginer`,agents:`Agents`,work:`Travail`,settings:`Paramètres`,usageAnalytics:`Utilisation des fournisseurs`,system:`Système`,userManagement:`Gestion des utilisateurs`,signOut:`Déconnexion`,exploreLabel:`Explorer`,notes:`Notes`,calendar:`Calendrier`,automations:`Automatisations`,prompts:`Prompts`,skills:`Compétences`,tools:`Outils`,channels:`Canaux`},toggleSize:`Basculer la taille de la barre latérale`,expandSidebar:`Agrandir la barre latérale`},user:{menu:{changePicture:`Changer la photo`,settings:`Paramètres`,usageAnalytics:`Utilisation des fournisseurs`,system:`Système`,userManagement:`Gestion des utilisateurs`,logout:`Déconnexion`,pinShortcut:`Épingler à la barre latérale`,unpinShortcut:`Détacher de la barre latérale`,evaluations:`Évaluations`},avatar:{title:`Changer la photo de profil`,updated:`Photo de profil mise à jour`,updateFailed:`Échec de la mise à jour de la photo de profil`,saving:`Enregistrement...`,label:`Avatar`,uploadAvatarImage:`Télécharger une image d'avatar`,dragAndDrop:`Glissez-déposez une image ou cliquez pour parcourir`,chooseImage:`Choisir une image`,uploading:`Téléchargement...`,enterImageUrl:`Ou entrez l'URL de l'image`,supportedFormats:`Formats supportés : JPG, PNG, GIF, WebP (max 2 Mo). Les images carrées fonctionnent mieux.`,customAvatar:`Image d'avatar personnalisée`,clickToChange:`Cliquez pour modifier ou supprimer`,removed:`Avatar supprimé`,uploaded:`Avatar téléchargé avec succès`,invalidFile:`Veuillez sélectionner un fichier image valide`,fileTooLarge:`La taille de l'image d'avatar doit être inférieure à 2 Mo`,readFailed:`Échec de la lecture du fichier image`,uploadFailed:`Échec du téléchargement de l'image d'avatar`},profile:{noEmail:`Aucun email fourni`}},settings:JSON.parse(`{"title":"Paramètres","tabs":{"appearance":"Apparence","model":"Par défaut","systemMessage":"Message système","plugins":"Plugins","search":"Recherche","generation":"Génération","documents":"Documents","tts":"Voix","imageGen":"Images","data":"Données","shortcuts":"Raccourcis","about":"À propos","sessions":"Sessions","apiKeys":"Clés API","notifications":"Notifications","ollamaDisabled":"Ollama est désactivé par un administrateur"},"appearance":{"title":"Apparence","language":{"title":"Langue","description":"Sélectionnez votre langue préférée"},"theme":{"title":"Thème","light":"Clair","dark":"Sombre","amoled":"Noir Pur","celestial":"Céleste","system":"Système"},"accent":{"title":"Couleur d'accent","custom":"Couleur personnalisée","useColor":"Utiliser {{color}} comme couleur d'accent","behaviorTitle":"Palette de l'interface","behaviorDescription":"Choisissez si la couleur d'accent reste limitée aux commandes ou adapte toute l'interface claire ou sombre.","defaultStyle":"Par défaut","defaultStyleDescription":"Conserver les surfaces neutres des thèmes clair et sombre.","adaptedStyle":"Adapter à l'accent","adaptedStyleDescription":"Teinter les surfaces, bordures et textes avec votre couleur d'accent."},"chatInterface":{"title":"Interface de chat","showUsername":"Afficher le nom d'utilisateur","showUsernameDescription":"Afficher le nom d'utilisateur dans les messages","followUpSuggestions":"Suggestions de suivi","followUpSuggestionsDescription":"Proposer des réponses rapides après chaque réponse","hapticFeedback":"Retour haptique (Android)","hapticFeedbackDescription":"Utiliser des vibrations discrètes pour les actions mobiles importantes","autoOpenArtifacts":"Ouvrir les artefacts automatiquement","autoOpenArtifactsDescription":"Ouvrir le panneau des artefacts quand une réponse en crée un"},"background":{"title":"Image d'arrière-plan","enable":"Activer l'image d'arrière-plan","enableDescription":"Afficher votre fond sur l’Accueil et dans Chat et Travail.","blur":"Flou","opacity":"Opacité","upload":"Envoyer une image d'arrière-plan","dragDrop":"Glissez-déposez une image ou cliquez pour parcourir","chooseImage":"Choisir une image","effect":"Style","dither":"Tramé","original":"Original","blurred":"Flouté","intensity":"Intensité","preview":"Aperçu du fond","change":"Changer d’image","saved":"Enregistré","saveFailed":"Les modifications n’ont pas pu être enregistrées. Réessayez.","originalPreserved":"Votre image d’origine reste inchangée.","fileTooLarge":"La taille de l'image d'arrière-plan ne doit pas dépasser 10 Mo."},"celestial":{"title":"Heure de la journée","description":"Céleste suit le soleil là où vous êtes. Faites glisser pour prévisualiser n'importe quelle minute, ou laissez-le suivre l'horloge.","live":"En direct","preview":"Aperçu","followClock":"Suivre l'horloge","sunrise":"Lever du soleil","sunset":"Coucher du soleil","location":"Position","locationHint":"Facultatif. Conservée uniquement dans ce navigateur, jamais envoyée au serveur ; les coordonnées sont arrondies au kilomètre.","useMyLocation":"Utiliser ma position","locationDenied":"Le navigateur n'a pas partagé de position. Vous pouvez saisir des coordonnées.","latitude":"Latitude","longitude":"Longitude","apply":"Appliquer","clear":"Effacer","approximateDay":"Durée du jour approximative","weather":"Suivre la météo","weatherHint":"Récupère les conditions actuelles auprès d'Open-Meteo pour votre position : nuages, pluie, neige, brouillard et vent façonnent le ciel. Nécessite une position.","weatherLoading":"Récupération de la météo…","weatherUnavailable":"Météo indisponible pour le moment.","wind":"vent {{speed}} km/h","kinds":{"clear":"Dégagé","partly":"Partiellement nuageux","overcast":"Couvert","fog":"Brouillard","drizzle":"Bruine","rain":"Pluie","snow":"Neige","thunder":"Orage"}}},"saveSettings":"Enregistrer les paramètres","preferences":{"updateFailed":"Échec de la mise à jour des paramètres : {{error}}"},"model":{"title":"Paramètres du modèle","defaultModel":"Modèle par défaut","defaultModelDescription":"Ce modèle sera utilisé par défaut pour les nouvelles conversations","selectModel":"Sélectionnez un modèle","specializedModels":"Modèles spécialisés","visionModel":"Modèle de vision","selectVisionModel":"Utiliser le modèle de chat actuel","visionModelDescription":"Utilisé automatiquement chaque fois que le contexte de chat sortant contient des images. Choisissez un modèle qui prend en charge l'entrée d'images.","visionModelUpdateFailed":"Échec de la mise à jour du modèle de vision : {{error}}","visionModelNoProvider":"Ce modèle de vision n'a pas d'identité de fournisseur. Sélectionnez un modèle disponible.","persona":"Persona","updateAll":"Mettre à jour tous les modèles","updateAllDescription":"Vérifier les mises à jour et télécharger les dernières versions de tous les modèles installés","updateAllButton":"Tout mettre à jour","updating":"Mise à jour des modèles...","currentModelInfo":"Infos du modèle actuel","name":"Nom","size":"Taille","family":"Famille","format":"Format","status":"Statut","statusStarting":"Démarrage...","statusComplete":"Terminé","statusError":"Erreur","bulkOperations":"Opérations en masse","autoTitle":{"title":"Génération automatique du titre","enable":"Activer le titre automatique","enableDescription":"Générer des titres de discussion et des résumés du raisonnement en direct","taskModel":"Modèle de tâche","selectTaskModel":"Sélectionnez le modèle de tâche","taskModelDescription":"Modèle utilisé pour les titres et les résumés du raisonnement en direct. Le raisonnement récent est envoyé à ce modèle."},"updatingModel":"Mise à jour de {{name}} ({{current}}/{{total}})","modelsProgress":"{{current}} sur {{total}} modèles","defaultModelUpdated":"Modèle par défaut mis à jour","allModelsUpdated":"Tous les modèles ont été mis à jour avec succès !","updateAllFailed":"Échec de la mise à jour des modèles : {{error}}"},"systemMessage":{"title":"Message système","description":"Définissez un message système personnalisé qui sera utilisé pour toutes les nouvelles conversations.","placeholder":"Entrez un message système...","saved":"Message système enregistré","saveFailed":"Échec de l'enregistrement du message système"},"plugins":{"title":"Plugins","description":"Gérez vos plugins installés","providerConnections":"Connexions aux fournisseurs","providerConnectionsDescription":"Connectez, configurez et inspectez les fournisseurs de modèles via des plugins.","providers":"Fournisseurs","searchProviders":"Rechercher des fournisseurs","noProvidersFound":"Aucun fournisseur ne correspond à votre recherche.","selectProvider":"Sélectionner un fournisseur","selectProviderDescription":"Choisissez un fournisseur pour inspecter sa connexion et son catalogue de modèles.","addNew":"Ajouter un nouveau plugin","upload":"Envoyer un plugin","addJson":"Ajouter JSON","uploading":"Envoi...","jsonPlaceholder":"Collez la configuration JSON du plugin...","install":"Installer un plugin","noPlugins":"Aucun plugin installé","noPluginsDescription":"Ajoutez un plugin pour étendre les fonctionnalités","loading":"Chargement des plugins...","installed":"Plugins installés","active":"Plugins actifs","activeLabel":"Actif","inactive":"Inactif","activate":"Activer","deactivate":"Désactiver","models":"modèles","apiKeySet":"Clé API définie","apiKeyConfiguration":"Configuration de la clé API","apiKeyDescription":"Stocker une clé API personnelle pour {{name}}.","apiKeyEnvAlternative":"Alternativement, définissez la","environmentVariable":"variable d'environnement","apiKeyConfigured":"Clé API configurée","apiKeyPlaceholder":"Entrez votre clé API...","saveApiKey":"Enregistrer la clé API","showApiKey":"Afficher la clé API","hideApiKey":"Masquer la clé API","configure":"Configurer","providerSettings":"Paramètres du fournisseur","status":"Statut","defaultEndpoint":"Endpoint par défaut","modelCatalog":"Catalogue de modèles","modelCatalogDescription":"Modèles découverts et configurés pour ce fournisseur et ses capacités.","refreshModels":"Actualiser les modèles","noModelsConfigured":"Aucun modèle n'est configuré pour ce fournisseur.","modelId":"ID du modèle","capabilities":"Capacités","modelCatalogUpdated":"Catalogue de modèles mis à jour : {{count}} modèles.","modelCatalogUnchanged":"Le catalogue de modèles est déjà à jour.","modelCatalogNeedsApiKey":"Ajoutez une clé API valide pour ce fournisseur afin de charger sa liste de modèles en direct.","modelCatalogUnavailable":"Impossible de charger la liste des modèles du fournisseur.","modelCatalogRefreshFailed":"Échec de l'actualisation du catalogue de modèles","invalidJson":"Format JSON non valide","capability":{"chat":"Chat","embedding":"Embedding","image":"Image","speech":"Parole","transcription":"Transcription"},"exportPlugin":"Exporter le plugin","deletePlugin":"Supprimer le plugin","apiKey":{"title":"Clé API","placeholder":"Entrez la clé API","save":"Enregistrer la clé","remove":"Supprimer la clé","configured":"Clé API configurée","notConfigured":"Clé API requise","saved":"Clé API enregistrée avec succès","removed":"Clé API supprimée","saveFailed":"Échec de l'enregistrement de la clé API","removeFailed":"Échec de la suppression de la clé API","enterKey":"Veuillez entrer une clé API"},"variables":"Variables"},"generation":{"title":"Options de génération","description":"Configurez comment l'IA génère les réponses","scopeLabel":"S'applique à","scopeAll":"Tous les modèles","scopeModel":"Uniquement {{model}}","scopeAllHint":"Les valeurs utilisées par chaque modèle, sauf s'il a les siennes.","scopeModelHint":"Enregistré pour ce seul modèle, et prioritaire sur les valeurs générales.","advancedSettings":"Paramètres de génération avancés","advancedSettingsDescription":"Échantillonnage, limites de jetons, contexte, pénalités et séquences d'arrêt","coreParameters":"Paramètres principaux","temperature":"Température","temperatureDescription":"Contrôle l'aléatoire. Les valeurs basses sont plus précises, les valeurs hautes plus créatives.","topP":"Top P","topPDescription":"Contrôle la diversité via l'échantillonnage nucleus. Les valeurs basses se concentrent sur les tokens probables.","topK":"Top K","topKDescription":"Limite la sélection de tokens aux K plus probables. Mettez 0 pour désactiver.","minP":"Min P","minPDescription":"Seuil de probabilité minimum pour la sélection de tokens.","generationControl":"Contrôle de génération","maxTokens":"Tokens maximum","maxTokensDescription":"Nombre maximum de tokens à générer dans la réponse.","repeatPenalty":"Pénalité de répétition","repeatPenaltyDescription":"Pénalise les tokens répétés. Les valeurs plus élevées réduisent la répétition.","contextLength":"Longueur du contexte","contextLengthDescription":"Taille maximale de la fenêtre de contexte pour les conversations.","seed":"Seed","optional":"optionnel","random":"Aléatoire","seedDescription":"Définissez un seed spécifique pour des résultats reproductibles.","advancedOptions":"Options avancées","presencePenalty":"Pénalité de présence","presencePenaltyDescription":"Pénalise les tokens qui apparaissent dans le contexte.","frequencyPenalty":"Pénalité de fréquence","frequencyPenaltyDescription":"Pénalise les tokens fréquemment utilisés.","stopSequences":"Séquences d'arrêt","commaSeparated":"séparés par des virgules","stopSequencesDescription":"Tokens personnalisés qui arrêteront la génération lorsqu'ils seront rencontrés.","resetDefaults":"Réinitialiser les valeurs par défaut","saveOptions":"Enregistrer les options","saveSuccess":"Options de génération mises à jour avec succès","saveFailed":"Échec de la mise à jour des options de génération : {{error}}","modelDefaultsLoaded":"Paramètres recommandés par {{model}} chargés","resetSuccess":"Options de génération réinitialisées aux valeurs par défaut","resetFailed":"Échec de la réinitialisation des options de génération : {{error}}","embeddingSettings":"Paramètres d'embedding","enableEmbeddings":"Activer les embeddings de documents","thinking":"Réflexion","thinkingDescription":"Effort de réflexion par défaut pour les réponses. Chaque conversation peut le remplacer.","thinkingLevels":{"default":"Valeur du modèle","defaultWith":"Valeur du modèle ({{level}})","off":"Désactivée","on":"Activée","low":"Faible","medium":"Moyenne","high":"Élevée"}},"documents":{"title":"Paramètres des documents","embeddings":{"title":"Embeddings","enable":"Activer les embeddings de documents","model":"Modèle d'embedding","modelDescription":"Sélectionnez le modèle utilisé pour l'embedding de documents","chunkSize":"Taille des chunks","chunkSizeInTokens":"(en tokens)","chunkSizeDescription":"Taille des morceaux de texte pour l'embedding","chunkOverlap":"Chevauchement des chunks","chunkOverlapInTokens":"(en tokens)","chunkOverlapDescription":"Chevauchement entre les chunks consécutifs","similarityThreshold":"Seuil de similarité","similarityDescription":"Score de similarité minimum pour inclure les résultats","status":"Statut des embeddings","statusLabel":"Statut","available":"Disponible","unavailable":"Indisponible","chunksWithEmbeddings":"Chunks avec embeddings","coverage":"Couverture","regenerate":"Régénérer les embeddings","regenerating":"Régénération...","regenerateSuccess":"Embeddings régénérés pour {{count}} documents","regeneratePartialSuccess":"{{count}} documents régénérés ; {{skipped}} ignorés","regenerateFailed":"Échec de la régénération des embeddings : {{error}}","saveSuccess":"Paramètres d’embedding mis à jour avec succès","saveFailed":"Échec de la mise à jour des paramètres d’embedding : {{error}}","resetSuccess":"Paramètres d’embedding réinitialisés aux valeurs par défaut","resetFailed":"Échec de la réinitialisation des paramètres d’embedding : {{error}}"},"collections":{"title":"Collections de connaissances","description":"Regroupez des documents en collections et joignez-les à toute discussion.","namePlaceholder":"Nom de la collection","create":"Créer","none":"Aucune collection","deleteConfirm":"Supprimer cette collection ? Les documents sont conservés.","createFailed":"Impossible de créer la collection","deleteFailed":"Impossible de supprimer la collection","assignFailed":"Impossible de déplacer le document","share":"Partager la collection","shared":"partagée"},"library":{"title":"Documents importés","description":"Documents disponibles comme contexte de chat. Un document importé dans un chat reste dans sa conversation ; un document sans chat ni collection rejoint toutes les conversations.","empty":"Aucun document importé pour le moment.","chatScope":"Un seul chat","everyChatScope":"Tous les chats","deleteConfirm":"Supprimer « {{name}} » ? Il disparaîtra de tous les chats.","deleteFailed":"Impossible de supprimer le document","extractionFailed":"Échec de l'extraction","extractionQueued":"Extraction…"}},"tts":{"title":"Synthèse vocale","description":"Configurez les paramètres de synthèse vocale pour la lecture des messages","loadingProviders":"Chargement des fournisseurs TTS...","noProviders":"Aucun fournisseur TTS","noProvidersDescription":"Configurez un plugin avec support TTS pour activer la synthèse vocale","enable":"Activer la synthèse vocale","enableDescription":"Autoriser la synthèse vocale pour les messages de l'assistant","autoPlay":"Lecture automatique des réponses","autoPlayDescription":"Lire automatiquement les nouveaux messages de l'assistant","streamSentences":"Lecture naturelle par lots","streamSentencesDescription":"Générer à l'avance plusieurs lots découpés selon les phrases, puis les lire comme une seule réponse fluide.","voiceConfiguration":"Configuration de la voix","model":"Modèle TTS","modelDescription":"Sélectionnez le modèle pour la génération de synthèse vocale","voice":"Voix","selectVoice":"Sélectionnez une voix","voiceDescription":"Choisissez la voix pour la synthèse vocale","providerDefaultVoice":"Ce modèle utilise sa voix par défaut, sauf si vous fournissez un enregistrement de référence lors de la génération de la parole.","voiceCloningAvailable":"Clonage vocal disponible","voiceCloningAvailableDescription":"Utilisez Imaginer → Audio pour créer une voix à partir d’un enregistrement de référence consenti et de sa transcription exacte. Vous pouvez enregistrer cette référence comme voix réutilisable.","savedVoiceOption":"{{name}} (voix enregistrée)","savedVoices":"Voix enregistrées","loadingSavedVoices":"Chargement des voix enregistrées…","deleteSavedVoice":"Supprimer la voix enregistrée {{name}}","deleteSavedVoiceConfirm":"Supprimer la voix enregistrée «\xA0{{name}}\xA0»\xA0? Son enregistrement de référence et sa transcription seront supprimés.","savedVoiceDeleted":"Voix enregistrée supprimée","savedVoicePreferenceCleanupFailed":"Voix enregistrée supprimée, mais les réglages de la parole n’ont pas pu être réinitialisés","savedVoiceDeleteFailed":"Impossible de supprimer la voix enregistrée","speed":"Vitesse","speedSlow":"0.5x","speedNormal":"1.0x","speedFast":"2.0x","availableProviders":"Fournisseurs disponibles","models":"modèles","test":"Tester","testing":"Test...","stop":"Arrêter","consentRevoked":"Consentement retiré","consentExpired":"Consentement expiré","transferCount":"envoyé au fournisseur {{total}} fois","consentExpires":"consentement jusqu’au {{date}}","revokeSavedVoice":"Retirer le consentement pour {{name}}","revokeSavedVoiceConfirm":"Retirer le consentement pour « {{name}} » ? La voix enregistrée ne pourra plus être utilisée, mais la trace du consentement est conservée.","savedVoiceRevoked":"Consentement retiré","savedVoiceRevokeFailed":"Échec du retrait du consentement","savedVoiceUnavailableCleanupFailed":"La voix enregistrée est indisponible et n’a pas pu être supprimée des paramètres vocaux","saveSuccess":"Paramètres TTS enregistrés avec succès","saveFailed":"Échec de l’enregistrement des paramètres TTS : {{error}}","testFailed":"Échec du test TTS : {{error}}"},"imageGen":{"title":"Génération d'images","description":"Configurez les paramètres et fournisseurs de génération d'images","loadingProviders":"Chargement des fournisseurs de génération d'images...","noProviders":"Aucun fournisseur de génération d'images","noProvidersDescription":"Configurez un plugin avec support de génération d'images","enable":"Activer la génération d'images","enableDescription":"Autoriser la génération d'images IA dans les conversations","configuration":"Configuration","model":"Modèle","modelDescription":"Sélectionnez le modèle pour la génération d'images","size":"Taille","sizeDescription":"Résolution des images générées","quality":"Qualité","qualityDescription":"Niveau de qualité des images générées","style":"Style","styleDescription":"Preset de style pour les images générées","availableProviders":"Fournisseurs disponibles","models":"modèles","saveSuccess":"Paramètres de génération d’images enregistrés avec succès","saveFailed":"Échec de l’enregistrement des paramètres de génération d’images : {{error}}"},"data":{"title":"Gestion des données","export":"Exporter les données","exportDescription":"Téléchargez une archive portable contenant les préférences, dossiers de discussions, sessions et messages, notes, collections de connaissances et le texte extrait des documents.","archiveScopeV3":"Inclut les préférences, discussions, dossiers, notes, collections de connaissances et le texte extrait des documents. Exclut les comptes et secrets, voix clonées biométriques, médias générés, personas et mémoire, ainsi que les données ou volumes Work.","exportAll":"Exporter toutes les données","import":"Importer les données","importDescription":"Importez les données d'une exportation précédente.","importData":"Importer les données","importing":"Importation...","clearSessions":"Effacer les sessions","clearSessionsDescription":"Supprimer toutes les sessions de chat. Cette action est irréversible.","clearAll":"Tout effacer","clearing":"Effacement...","importOptions":"Options d'importation","importOptionsDescription":"Choisissez comment gérer les données existantes","validatingArchive":"Validation de l’archive et calcul des modifications…","archiveValidationFailed":"Échec de la validation de l’archive","preflightReport":"Aperçu de l’importation","preflightIncoming":"{{folders}} dossiers · {{sessions}} discussions · {{messages}} messages · {{notes}} notes · {{collections}} collections · {{documents}} documents · {{chunks}} fragments","preflightRemappedIds":"{{count}} ID seront réattribués pour protéger les données d’un autre compte.","skipDuplicates":"Ignorer les doublons","overwrite":"Écraser les existants","importResults":"Résultats de l'importation","preferences":"Préférences","imported":"Importé","failed":"Échoué","sessions":"Sessions","sessionFolders":"Dossiers de sessions","notes":"Notes","knowledgeCollections":"Collections de connaissances","importedLabel":"importées","overwrittenLabel":"écrasé","skipped":"ignorées","toCreate":"à créer","toOverwrite":"à écraser","toSkip":"à ignorer","documents":"Documents","warnings":"Avertissements","refreshAfterImportFailed":"Les données ont été importées, mais certaines vues n’ont pas pu être actualisées. Rechargez Libre WebUI pour voir toutes les modifications.","exportSuccess":"Archive de données portable exportée","exportFailed":"Échec de l’exportation","importSuccess":"Archive de données portable importée","importFailed":"Échec de l’importation","archiveErrors":{"invalidJson":"L’archive portable ne contient pas de JSON valide.","objectRequired":"L’archive portable doit contenir un objet JSON.","unsupportedVersion":"Version {{version}} de l’archive portable non prise en charge.","unrecognized":"Ce fichier n’est pas une archive portable Libre WebUI."},"errors":"Erreurs","archivedChats":{"title":"Discussions archivées","empty":"Aucune discussion archivée","unarchive":"Désarchiver"}},"about":{"title":"À propos","versionLabel":"Version","ollama":{"title":"Statut Ollama","version":"Version","healthy":"Opérationnel","unhealthy":"Non opérationnel"},"stats":{"models":"Modèles","sessions":"Sessions"},"features":{"privacy":{"title":"Vie privée d'abord","description":"Vos données restent sur votre appareil"},"openSource":{"title":"Open Source","description":"Logiciel libre et open source"},"localInference":{"title":"Inférence locale","description":"Exécutez des modèles IA localement avec Ollama"}},"openSourceBy":"Open source par {{company}}","links":{"title":"Liens","github":"GitHub","githubDescription":"Voir le code source et contribuer","website":"Site web","websiteDescription":"Visitez notre site web","documentation":"Documentation","reportIssue":"Signaler des problèmes","reportIssueDescription":"Rapports de bugs et demandes de fonctionnalités","documentationDescription":"Guides, tutoriels et référence API","forgejo":"Miroir Forgejo","forgejoDescription":"Dépôt Forgejo auto-hébergé","sponsor":"Sponsor","sponsorDescription":"Aider à financer le projet","star":"Étoile sur GitHub","starDescription":"Une étoile aide les autres à découvrir le projet"},"version":"Version {{version}}","updates":{"checking":"Recherche de mises à jour…","upToDate":"Vous utilisez la dernière version","updateAvailable":"La version {{version}} est disponible","ahead":"En avance sur la dernière version publiée ({{version}})","checkFailed":"Impossible de vérifier les mises à jour","viewChangelog":"Voir le journal des modifications"}},"groups":{"general":"Général","chat":"Chat","media":"Voix et images","connections":"Connexions","admin":"Administration"},"search":{"title":"Recherche web","description":"Recherchez sur le web via une instance SearXNG auto-hébergée. Une fois activée, le chat propose un bouton de recherche et les tâches Work avec accès réseau peuvent chercher.","enableLabel":"Activer la recherche web","enableDescription":"Proposer la recherche web aux chats et aux tâches Work. Les recherches s'exécutent côté serveur sur l'instance configurée.","urlLabel":"URL SearXNG","urlDescription":"URL de base de l'instance SearXNG accessible depuis le serveur. La pile de déploiement privé fournie expose http://searxng:8080.","maxResultsLabel":"Résultats par recherche","maxResultsDescription":"Combien de résultats alimentent une réponse ou un appel d'outil, 1-100.","maxResultsInvalid":"Les résultats par recherche doivent être entre 1 et 100.","safeSearchLabel":"Recherche sécurisée","safeSearchDescription":"Demander au moteur de filtrer les résultats explicites.","test":"Tester la connexion","testing":"Test en cours…","testOk":"La recherche fonctionne — {{results}} résultats renvoyés","testFailed":"Échec du test de recherche","save":"Enregistrer","saved":"Paramètres de recherche enregistrés","saveFailed":"Impossible d'enregistrer les paramètres de recherche"},"compaction":{"title":"Compactage du contexte","description":"Lorsqu'une conversation dépasse le seuil de jetons, le serveur résume ses messages les plus anciens et ne conserve mot pour mot que les plus récents. S'applique à tous les utilisateurs de ce serveur.","thresholdLabel":"Seuil de jetons","thresholdDescription":"Nombre estimé de jetons de contexte au-delà duquel l'historique ancien est résumé, 500-1 000 000.","thresholdInvalid":"Le seuil de jetons doit être compris entre 500 et 1 000 000.","keepRecentLabel":"Messages récents conservés","keepRecentDescription":"Combien des derniers messages restent toujours mot pour mot, 2-200.","keepRecentInvalid":"Le nombre de messages récents conservés doit être compris entre 2 et 200.","modelLabel":"Modèle de compactage","modelDescription":"Le modèle qui rédige les résumés. Le modèle de la session est utilisé si aucun n'est choisi.","sessionModelOption":"Utiliser le modèle de la session","promptLabel":"Invite de résumé personnalisée","promptPlaceholder":"Laisser vide pour utiliser l'invite intégrée","promptDescription":"Les variables de modèle {{previousSummaryVariable}} et {{messagesVariable}} sont remplacées par le résumé précédent et les messages à résumer.","saved":"Paramètres de compactage enregistrés","saveFailed":"Impossible d'enregistrer les paramètres de compactage","loadFailed":"Impossible de charger les paramètres de compactage"},"sessions":{"title":"Sessions","description":"Tous les endroits où ce compte est connecté. La déconnexion d'une session prend effet immédiatement ; une nouvelle connexion rétablit l'accès.","signOutOthers":"Déconnecter les autres sessions","signingOutOthers":"Déconnexion…","signOut":"Déconnecter","signingOut":"Déconnexion…","revoked":"Session déconnectée.","revokeFailed":"La session n'a pas pu être déconnectée.","othersRevoked":"Autres sessions déconnectées : {{count}}","loadFailed":"Les sessions n'ont pas pu être chargées.","empty":"Aucune session trouvée.","current":"Cette session","revokedBadge":"Déconnectée","unknownDevice":"Appareil inconnu","createdAt":"Connexion","lastSeenAt":"Dernière activité","expiresAt":"Expire"},"apiKeys":{"title":"Clés API","description":"Jetons à portée limitée pour vos scripts et intégrations. Chaque clé n'a accès qu'aux portées que vous choisissez.","newKeyTitle":"Votre nouvelle clé API","copy":"Copier","copied":"Copié dans le presse-papiers.","copyFailed":"Échec de la copie.","showOnceWarning":"Copiez-la maintenant : elle ne sera plus affichée.","dismiss":"Terminé","createTitle":"Créer une clé","nameLabel":"Nom","namePlaceholder":"ex. pipeline CI","nameRequired":"Donnez un nom à la clé.","expiryLabel":"Expire dans (jours, facultatif)","expiryPlaceholder":"Jamais","expiryInvalid":"L'expiration doit être un nombre entier de jours.","scopesLabel":"Portées","scopesRequired":"Sélectionnez au moins une portée.","create":"Créer la clé","creating":"Création…","created":"Clé API créée.","createFailed":"La clé API n'a pas pu être créée.","revoke":"Révoquer","revoking":"Révocation…","revoked":"Clé API révoquée.","revokeFailed":"La clé API n'a pas pu être révoquée.","revokedBadge":"Révoquée","loadFailed":"Les clés API n'ont pas pu être chargées.","empty":"Aucune clé API pour l'instant.","createdAt":"Créée","lastUsedAt":"Dernière utilisation","expiresAt":"Expire","neverExpires":"Jamais"},"notifications":{"title":"Notifications","description":"Comment ce navigateur est informé des mentions, partages, rappels et travaux terminés.","pushTitle":"Notifications du navigateur","pushHint":"Afficher les notifications système de cet appareil même quand l'onglet est en arrière-plan.","enabled":"Les notifications du navigateur sont activées sur cet appareil.","disabled":"Les notifications du navigateur sont désactivées sur cet appareil.","enableFailed":"Impossible d'activer les notifications du navigateur.","permissionDenied":"Les notifications sont bloquées dans les réglages du navigateur pour ce site.","unsupported":"Ce navigateur ne prend pas en charge les notifications push.","workerMissing":"Le push nécessite l'application installée. Rechargez l'application de production et réessayez.","deviceNote":"Les notifications sont propres à chaque appareil. Déconnecter la session supprime aussi son enregistrement push."}}`),models:{title:`Modèles`,subtitle:`Téléchargez, gérez et surveillez vos modèles Ollama`,installed:`Modèles installés`,available:`Modèles disponibles`,pull:`Télécharger le modèle`,pulling:`Téléchargement...`,delete:`Supprimer le modèle`,deleting:`Suppression...`,size:`Taille`,modified:`Modifié`,family:`Famille`,parameters:`Paramètres`,quantization:`Quantification`,noModels:`Aucun modèle installé`,pullFirst:`Téléchargez un modèle pour commencer`,noModelsFound:`Aucun modèle trouvé`},personas:{title:`Personas`,create:`Créer un persona`,edit:`Modifier le persona`,delete:`Supprimer le persona`,name:`Nom`,description:`Description`,systemPrompt:`Message système`,model:`Modèle`,avatar:`Avatar`,background:`Arrière-plan`,noPersonas:`Aucun persona créé`,createFirst:`Créez votre premier persona pour personnaliser votre expérience de chat`},gallery:{title:`Galerie`,subtitle:`Votre galerie d'images générées par IA`,imageCount:`{{count}} images`,generate:`Générer une image`,generateDescription:`Créer des images avec l'IA`,generating:`Génération...`,prompt:`Description`,promptPlaceholder:`Décrivez l'image que vous souhaitez générer...`,noImages:`Aucune image générée`,download:`Télécharger`,delete:`Supprimer`,regenerate:`Régénérer`,model:`Modèle`,size:`Taille`,quality:`Qualité`,created:`Créé`},errors:{generic:`Une erreur s'est produite`,network:`Erreur réseau. Veuillez vérifier votre connexion.`,unauthorized:`Vous n'êtes pas autorisé à effectuer cette action.`,notFound:`La ressource demandée n'a pas été trouvée.`,serverError:`Erreur serveur. Veuillez réessayer plus tard.`,validation:`Veuillez vérifier votre saisie et réessayer.`},keyboard:{title:`Raccourcis clavier`,toggleSidebar:`Afficher/Masquer la barre latérale`,openSettings:`Ouvrir les paramètres`,toggleDarkMode:`Basculer le mode sombre`,showShortcuts:`Afficher les raccourcis clavier`,closeModals:`Fermer les fenêtres`,groups:{navigation:`Navigation`,general:`Général`,chat:`Chat`,workspace:`Espace de travail`},actions:{sendMessage:`Envoyer le message`,newLine:`Nouvelle ligne dans le message`,saveEdit:`Enregistrer le message modifié`,cancelEdit:`Annuler la modification`,saveFile:`Enregistrer le fichier`,formatCode:`Formater le code`},description:`Tous les raccourcis clavier disponibles dans Libre WebUI.`,newChat:`Nouvelle conversation`,newWork:`Nouvelle session Work`,openPalette:`Ouvrir la palette de commandes`},modelDownload:{success:`{{name}} téléchargé`,failed:`Échec du téléchargement : {{error}}`,startFailed:`Échec du démarrage du téléchargement`,cancelled:`Téléchargement annulé`},modelTools:{toasts:{fetchInfoFailed:`Échec de la récupération des informations`,pushSuccess:`Modèle envoyé`,createSuccess:`Modèle créé`,copySuccess:`Modèle copié`,embeddingsSuccess:`Embeddings générés (voir la console)`,failed:`Échec`,unknownError:`Erreur inconnue`}},modelManager:{title:`Modèles`,loading:`Chargement des modèles...`,systemStatus:{online:`Ollama en ligne`,offline:`Ollama hors ligne`,models:`modèle`,models_plural:`modèles`,running:`en cours`,vram:`VRAM`},sections:{pull:`Télécharger un nouveau modèle`,library:`Parcourir la bibliothèque`,huggingface:`HuggingFace Hub`,running:`Modèles en cours d'exécution`,local:`Modèles locaux`,advanced:`Actions avancées`,catalog:`Catalogue de modèles`},catalog:{searchPlaceholder:`Rechercher des modèles par nom ou fournisseur...`,noModels:`Aucun modèle n'est encore disponible.`,empty:`Aucun modèle ne correspond à votre recherche.`,providerOllama:`Ollama`,hidden:`Masqué`,visibilityFailed:`Impossible de mettre à jour la visibilité du modèle.`,filterAll:`Tous les modèles`,filterLocal:`Local`,filterProviders:`Fournisseurs`,filterHidden:`Masqués`,enableAll:`Activer les modèles affichés`,disableAll:`Désactiver les modèles affichés`,rename:`Modifier le nom et l'image`,setPicture:`Définir une image`,clearPicture:`Supprimer l'image`,pictureInvalid:`Choisissez un fichier image.`,pictureTooLarge:`Les images doivent faire moins de 192 Ko.`,saving:`Enregistrement…`,hide:`Masquer aux utilisateurs`,show:`Afficher aux utilisateurs`,star:`Marquer {{name}} d’une étoile`,unstar:`Retirer l’étoile de {{name}}`},pull:{placeholder:`Entrez le nom du modèle (ex: llama3.2:3b, deepseek-r1:14b)`,button:`Télécharger`,cancel:`Annuler`,popular:`Modèles populaires :`,browseAll:`Parcourir tous les modèles sur ollama.com`,success:`Modèle {{name}} téléchargé avec succès`,cancelled:`Téléchargement du modèle annulé`,failed:`Échec du téléchargement du modèle`,enterName:`Veuillez entrer un nom de modèle`,restricted:`L'installation des modèles est réservée aux administrateurs sur cette instance.`},progress:{starting:`Initialisation...`,pulling:`Téléchargement du modèle...`,pullingLayer:`téléchargement`,verifying:`Vérification de l'intégrité...`,verifyingDigest:`vérification du digest sha256`,writing:`Écriture du manifeste...`,cleaning:`Nettoyage...`},library:{available:`disponibles`,search:`Rechercher des modèles...`,noResults:`Aucun modèle correspondant à vos critères`,installed:`Installé`,more:`+{{count}} de plus`,refresh:`Actualiser la bibliothèque`},huggingface:{browseAll:`Parcourir tout sur HuggingFace`,checkingGguf:`Recherche des fichiers GGUF...`,noGgufAvailable:`Aucun fichier GGUF disponible pour Ollama`,ggufFilesCount:`Fichiers GGUF ({{count}}) - Télécharger vers Ollama`,noModelsFound:`Aucun modèle trouvé`,noResults:`Aucun modèle trouvé. Essayez d'ajuster votre recherche.`,browseAllLink:`Voir tout`,search:`Rechercher des modèles HuggingFace...`,by:`par`,gated:`Accès restreint`,viewOnHF:`Voir sur HuggingFace`,sortDownloads:`Téléchargements`,sortLikes:`Likes`,sortRecent:`Récent`,taskTextGeneration:`Génération de texte`,taskTextToSpeech:`Synthèse vocale`,taskTextToImage:`Texte vers image`,taskSpeechRecognition:`Reconnaissance vocale`,tasks:{textGen:`Génération de texte`,tts:`Synthèse vocale`,image:`Texte vers image`,stt:`Reconnaissance vocale`},sort:{downloads:`Plus téléchargés`,likes:`Plus aimés`,recent:`Récemment mis à jour`}},local:{noModels:`Aucun modèle installé`,pullToStart:`Téléchargez un modèle ci-dessus pour commencer`,installed:`installés`,running:`En cours`,info:`Info`,copy:`Copier`,delete:`Supprimer`,deleteConfirm:`Êtes-vous sûr de vouloir supprimer le modèle "{{name}}" ?`,deleteSuccess:`Modèle {{name}} supprimé avec succès`,deleteFailed:`Échec de la suppression du modèle`},advanced:{createModel:`Créer un modèle`,fromModelfile:`À partir d'un Modelfile`,copyModel:`Copier un modèle`,duplicateExisting:`Dupliquer un existant`,testEmbeddings:`Tester les embeddings`,generateVectors:`Générer des vecteurs`,healthCheck:`Vérification de santé`,testConnection:`Tester la connexion`,healthy:`Ollama est opérationnel !`},modals:{details:{title:`Détails du modèle`,info:`Informations sur le modèle`,family:`Famille`,parameters:`Paramètres`,quantization:`Quantification`,format:`Format`,systemPrompt:`Message système`,template:`Modèle`,license:`Licence`,modelfile:`Modelfile`,noDetails:`Aucun détail disponible`},copy:{title:`Copier le modèle`,source:`Modèle source`,selectModel:`Sélectionnez un modèle...`,newName:`Nouveau nom du modèle`,placeholder:`ex: mon-modèle-personnalisé`,copying:`Copie en cours...`,button:`Copier le modèle`,success:`Modèle copié vers {{name}}`,failed:`Échec de la copie du modèle`,enterBoth:`Veuillez entrer les noms source et destination`},create:{title:`Créer un modèle personnalisé`,name:`Nom du modèle`,namePlaceholder:`ex: mon-assistant`,modelfile:`Modelfile`,modelfilePlaceholder:`FROM llama3.2
|
|
2
|
+
SYSTEM Vous êtes un assistant utile.`,see:`Voir`,docs:`la documentation Modelfile`,docsLink:`pour la référence syntaxique`,creating:`Création...`,button:`Créer le modèle`,success:`Modèle {{name}} créé avec succès`,failed:`Échec de la création du modèle`,enterBoth:`Veuillez entrer le nom du modèle et le contenu du Modelfile`},embeddings:{title:`Tester les embeddings`,model:`Modèle d'embedding`,selectModel:`Sélectionnez un modèle...`,recommended:`Recommandés : nomic-embed-text, mxbai-embed-large`,input:`Texte d'entrée`,placeholder:`Entrez le texte pour générer les embeddings...`,generating:`Génération...`,button:`Générer les embeddings`,result:`Résultat ({{count}} dimensions)`,success:`Vecteur d'embedding de {{count}} dimensions généré`,failed:`Échec de la génération des embeddings`,enterBoth:`Veuillez sélectionner un modèle et entrer du texte`}}},personaManager:{title:`Personas`,subtitle:`Créez et gérez des personas IA avec des personnalités, mémoires et comportements personnalisés`,loading:`Chargement des personas...`,createButton:`Créer un persona`,importExport:`Importer/Exporter`,stats:{title:`Vos personas`,count:`{{count}} persona créé`,count_plural:`{{count}} personas créés`},empty:{title:`Aucun persona`,description:`Créez votre premier persona pour commencer avec des interactions IA personnalisées`,button:`Créer votre premier persona`},deleteConfirm:`Êtes-vous sûr de vouloir supprimer "{{name}}" ?`,deleteSuccess:`Persona "{{name}}" supprimé avec succès`,downloadSuccess:`Persona "{{name}}" téléchargé avec succès`,failed:`Échec de {{action}} le persona`},personaForm:{title:{create:`Créer un nouveau persona`,edit:`Modifier le persona`},subtitle:{create:`Créez un nouveau persona IA avec une personnalité personnalisée, des systèmes de mémoire et des capacités d'apprentissage adaptatif`,edit:`Personnalisez votre persona IA avec une mémoire avancée, un apprentissage adaptatif et des paramètres intelligents`},loading:`Chargement du formulaire...`,saved:`Enregistré`,tabs:{basic:`Base`,parameters:`Paramètres`,memory:`Mémoire et apprentissage`,advanced:`Avancé`,bindings:`Liaisons`},basic:{name:`Nom`,namePlaceholder:`Entrez le nom du persona`,model:`Modèle`,selectModel:`Sélectionnez un modèle`,description:`Description`,descriptionPlaceholder:`Décrivez votre persona...`,systemPrompt:`Message système`,systemPromptPlaceholder:`Entrez le message système qui définit le comportement de votre persona...`,systemPromptHint:`Le message système définit comment votre persona se comportera et répondra.`},parameters:{temperature:`Température`,temperatureHint:`Contrôle la créativité vs la cohérence`,topP:`Top-P`,topPHint:`Contrôle la diversité des réponses`,topK:`Top-K`,topKHint:`Limite le vocabulaire aux k premiers tokens`,contextWindow:`Fenêtre de contexte`,contextWindowHint:`Longueur maximale de l'historique de conversation`,maxTokens:`Tokens maximum`,maxTokensHint:`Longueur maximale de la réponse`,repeatPenalty:`Pénalité de répétition`,repeatPenaltyHint:`Réduit les réponses répétitives`},memory:{title:`Système de mémoire`,subtitle:`Le persona se souvient des conversations au fil du temps`,enableHint:`Activez le système de mémoire pour permettre à votre persona de se souvenir des conversations et de construire un contexte au fil du temps.`,loading:`Chargement du statut de la mémoire...`,noData:`Aucune donnée de mémoire`,memories:`Mémoires`,mbUsed:`Mo utilisés`,lastBackup:`Dernière sauvegarde`,never:`Jamais`,maxMemories:`Mémoires maximum`,maxMemoriesHint:`Combien de mémoires ce persona peut stocker`,retention:`Rétention de la mémoire`,retentionHint:`Jours de conservation des mémoires avant nettoyage`,autoCleanup:`Nettoyage automatique des anciennes mémoires`,wipeAll:`Effacer toutes les mémoires`,wipeCannot:`Cette action est irréversible`,wipeButton:`Effacer`,wiping:`Effacement...`,wipeConfirm:`Êtes-vous sûr de vouloir effacer toutes les mémoires ? Cette action est irréversible.`,wipeSuccess:`{{count}} mémoires effacées`},learning:{title:`Apprentissage adaptatif`,subtitle:`Le persona évolue en fonction des interactions`,enableHint:`Activez l'apprentissage adaptatif pour permettre à votre persona d'évoluer et de personnaliser les réponses en fonction de vos interactions.`,speed:`Vitesse d'apprentissage`,slow:`Lent`,slowDesc:`Changements progressifs`,balanced:`Équilibré`,balancedDesc:`Rythme modéré`,fast:`Rapide`,fastDesc:`Adaptation rapide`,autoAdapt:`S'adapter automatiquement aux préférences de l'utilisateur`,whatLearns:`Ce que le persona apprend :`,conversationTone:`Ton de conversation`,responseStyle:`Style de réponse`,userPreferences:`Préférences utilisateur`,topicInterests:`Intérêts thématiques`},advanced:{embeddingModel:`Modèle d'embedding`,embeddingHint:`Sélectionnez le modèle utilisé pour l'encodage de la mémoire et la recherche sémantique. Les modèles d'embedding sont affichés en premier, suivis des autres modèles disponibles.`,noModels:`Aucun modèle trouvé`,embeddingModels:`Modèles d'embedding`,otherModels:`Autres modèles`,installHint:`Installez un modèle d'embedding :`,recommended:`Recommandés : nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed`,aboutTitle:`À propos des paramètres avancés`,aboutDescription:`Le modèle d'embedding est utilisé par le système de mémoire pour comprendre le sens sémantique et trouver des mémoires pertinentes pendant les conversations. Choisissez un modèle adapté à votre cas d'utilisation et aux ressources disponibles.`},actions:{cancel:`Annuler`,save:`Enregistrer`,saving:`Enregistrement...`,saveClose:`Enregistrer et fermer`,create:`Créer`},success:{created:`Persona créé`,updated:`Persona mis à jour`},error:{saveFailed:`Échec de l'enregistrement`},bindings:{toolServers:`Serveurs d'outils`,toolServersHint:`Serveurs que cette persona peut appeler. Laissé vide, tous les serveurs déjà accessibles à l'utilisateur sont proposés.`,noToolServers:`Aucun serveur d'outils n'est à votre disposition.`,builtinTools:`Outils intégrés`,builtinToolsHint:`Outils que le serveur implémente lui-même. Laissé vide, ils sont tous proposés.`,noBuiltinTools:`Aucun outil intégré n'est disponible.`,builtin:{web_search:`Recherche web`,search_documents:`Rechercher dans les documents`,load_skill:`Charger une compétence`},skills:`Compétences`,skillsHint:`Compétences que le modèle peut charger tant que cette persona est active.`,noSkills:`Vous n'avez encore créé aucune compétence.`,collections:`Collections de connaissances`,collectionsHint:`Collections de documents dans lesquelles cette persona peut chercher.`,noCollections:`Vous n'avez encore créé aucune collection.`,prompt:`Prompt`,promptHint:`Un prompt pour amorcer chaque nouvelle conversation avec cette persona.`,noPrompt:`Aucun prompt`,version:`Révision des liaisons {{version}}`}},personaCard:{enhanced:`Amélioré`,systemPrompt:`Message système`,memories:`mémoires`,use:`Utiliser`,editTooltip:`Modifier le persona`,downloadTooltip:`Télécharger le persona`,backup:`Sauvegarde`,exportDNA:`Exporter l'ADN`,wipeMemories:`Effacer les mémoires`,wipeConfirm:`Êtes-vous sûr de vouloir effacer toutes les mémoires de ce persona ? Cette action est irréversible.`,wipeSuccess:`{{count}} mémoires effacées`,backupSuccess:`Sauvegarde du persona téléchargée avec succès`,dnaSuccess:`ADN du persona exporté avec succès`,failed:`Échec de {{action}}`,shareTooltip:`Partager cette persona`},userManager:JSON.parse(`{"title":"Gestion des utilisateurs","subtitle":"Gérez les comptes utilisateurs et les permissions","pageDescription":"Gérez les comptes utilisateurs, les permissions et les contrôles d'accès pour votre instance Libre WebUI.","sections":{"users":"Utilisateurs","access":"Accès et politiques","security":"Sécurité","defaults":"Paramètres par défaut"},"directory":{"title":"Comptes actifs","allRoles":"Tous les rôles","clearFilters":"Effacer les filtres","results":"{{visible}} comptes sur {{total}}","loadFailed":"Impossible de charger les utilisateurs. Réessayez.","empty":"Aucun compte actif pour le moment","editSelfRole":"Vous ne pouvez pas modifier votre propre rôle d’administrateur.","deleteTitle":"Supprimer l’utilisateur"},"loading":"Chargement des utilisateurs...","createUser":"Créer un utilisateur","search":"Rechercher des utilisateurs...","noUsers":"Aucun utilisateur trouvé","noUsersMatching":"Aucun utilisateur correspondant à votre recherche","columns":{"user":"Utilisateur","email":"Email","role":"Rôle","created":"Créé le","actions":"Actions"},"roles":{"admin":"Admin","user":"Utilisateur"},"noEmail":"Pas d'email","deleteConfirm":"Êtes-vous sûr de vouloir supprimer l'utilisateur \\"{{name}}\\" ?","deleteSuccess":"Utilisateur supprimé avec succès","deleteFailed":"Échec de la suppression de l'utilisateur","cannotDeleteSelf":"Vous ne pouvez pas supprimer votre propre compte","approval":{"title":"Approbations en attente","description":"Vérifiez les nouvelles inscriptions avant de les autoriser sur cette instance.","registered":"Inscrit","activate":"Activer le compte","reject":"Rejeter l'inscription","approved":"{{name}} peut maintenant se connecter.","failed":"Le compte n'a pas pu être approuvé.","notification":"{{count}} inscription(s) en attente de votre approbation.","notificationBadge":"{{count}} approbations d'utilisateurs en attente"},"form":{"title":{"create":"Créer un utilisateur","edit":"Modifier l'utilisateur"},"username":"Nom d'utilisateur","usernamePlaceholder":"Entrez le nom d'utilisateur","email":"Email","emailPlaceholder":"Entrez l'email (optionnel)","password":"Mot de passe","passwordPlaceholder":"Entrez le mot de passe","passwordHint":"Laissez vide pour conserver le mot de passe actuel","role":"Rôle","creating":"Création...","updating":"Mise à jour...","createButton":"Créer l'utilisateur","updateButton":"Mettre à jour l'utilisateur","createSuccess":"Utilisateur créé avec succès","updateSuccess":"Utilisateur mis à jour avec succès","createFailed":"Échec de la création de l'utilisateur","updateFailed":"Échec de la mise à jour de l'utilisateur"},"workAccess":{"title":"Accès à Work","description":"Autoriser tous les utilisateurs actifs à créer et exécuter des tâches Work dans des bacs à sable isolés. Les administrateurs y ont toujours accès ; les espaces de travail sur dossiers hôtes restent réservés aux administrateurs.","saved":"Accès à Work mis à jour","saveFailed":"Impossible de mettre à jour l'accès à Work"},"workPolicies":{"title":"Politiques Work","description":"Préréglages d'exécution nommés (image, limites, arrêt d'inactivité) sous lesquels créer des tâches. Les champs vides héritent des valeurs globales.","add":"Ajouter une politique","name":"Nom","image":"Image","memory":"Mémoire","cpu":"CPU","pids":"Limite de PID","workspaceSize":"Taille de l'espace de travail","idleMinutes":"Arrêt d'inactivité (minutes)","networkDefault":"Réseau par défaut","networkInherit":"Hériter du défaut","networkOn":"Activé","networkOff":"Désactivé","save":"Enregistrer","cancel":"Annuler","edit":"Modifier la politique","delete":"Supprimer la politique","deleteConfirm":"Supprimer cette politique ? Les tâches qui l'utilisent reviennent aux valeurs globales.","empty":"Aucune politique pour l'instant. Les tâches utilisent les valeurs d'exécution globales.","saved":"Politique Work enregistrée","deleted":"Politique Work supprimée","failed":"Impossible d'enregistrer la politique Work","invalidNumber":"La limite de PID et l'arrêt d'inactivité doivent être des nombres.","guiEnabled":"Work Computer (GUI + navigateur)","takeoverEnabled":"Autoriser la prise de contrôle de l'écran","computerPreset":"Work Computer","computerPresetHint":"Le Work Computer requiert l'image GUI : construisez-la depuis deploy/work-computer du dépôt et taguez-la libre-work-computer:latest.","approvalsRequired":"Exiger une approbation pour les actions à effet de bord"},"modelAccess":{"title":"Téléchargement de modèles","description":"Autoriser tous les utilisateurs actifs à télécharger des modèles depuis Ollama et le navigateur Hugging Face. Les administrateurs peuvent toujours télécharger des modèles.","saved":"Accès au téléchargement de modèles mis à jour","saveFailed":"Impossible de mettre à jour l'accès au téléchargement de modèles"},"webSearchAccess":{"title":"Recherche web","description":"Autoriser tous les utilisateurs actifs à utiliser la recherche web dans les chats et les tâches Work. Les administrateurs peuvent toujours l'utiliser. Le moteur se configure dans Paramètres > Recherche.","saved":"Accès à la recherche web mis à jour","saveFailed":"Impossible de mettre à jour l'accès à la recherche web"},"defaultTheme":{"title":"Thème par défaut","description":"Thème de la page de connexion, des nouveaux comptes et des navigateurs qui n'en ont pas choisi. Chacun peut toujours choisir le sien dans les Paramètres.","saved":"Thème par défaut mis à jour","saveFailed":"Impossible de mettre à jour le thème par défaut"},"agentAccess":{"title":"Agents","description":"Proposer la section Agents (Libre Claw) aux administrateurs. Les CLI d'agents s'exécutent sur l'hôte avec l'utilisateur du serveur, hors du bac à sable Work.","saved":"Accès aux agents mis à jour","saveFailed":"Impossible de mettre à jour l'accès aux agents","lockedByEnv":"Fixé par la variable d'environnement AGENT_CLI_MODELS_ENABLED."},"groups":{"title":"Groupes","description":"Regroupez les comptes pour gérer les accès partagés et inspectez ce que chaque compte peut réellement faire.","newGroup":"Nouveau groupe","nameLabel":"Nom","nameRequired":"Donnez un nom au groupe.","descriptionLabel":"Description (facultatif)","create":"Créer le groupe","creating":"Création…","created":"Groupe créé.","createFailed":"Le groupe n'a pas pu être créé.","deleted":"Groupe supprimé.","deleteFailed":"Le groupe n'a pas pu être supprimé.","deleteGroup":"Supprimer le groupe","loadFailed":"Les groupes n'ont pas pu être chargés.","empty":"Aucun groupe pour l'instant.","memberCount":"Membres : {{count}}","noMembers":"Aucun membre pour l'instant.","addedAt":"Ajouté","addMember":"Ajouter un membre","add":"Ajouter","selectUser":"Sélectionner un utilisateur…","memberAdded":"Membre ajouté.","memberAddFailed":"Le membre n'a pas pu être ajouté.","removeMember":"Retirer le membre","memberRemoved":"Membre retiré.","memberRemoveFailed":"Le membre n'a pas pu être retiré.","effectiveTitle":"Accès effectif","effectiveDescription":"Choisissez un compte pour voir l'accès dont il dispose au final via son rôle, ses groupes et ses autorisations.","accessLookupFailed":"L'accès effectif n'a pas pu être chargé.","roleLabel":"Rôle","statusLabel":"Statut","memberOf":"Groupes","featuresLabel":"Accès aux fonctionnalités","grantsLabel":"Autorisations","grantVia":"via"},"audit":{"title":"Journal d'audit de sécurité","description":"Connexions récentes, vérifications de permissions et modifications administratives sur cette instance.","actionFilter":"Action","actionPlaceholder":"ex. auth.login","resultFilter":"Résultat","resultSuccess":"Succès","resultDenied":"Refusé","resultFailure":"Échec","limitFilter":"Limite","loadFailed":"Le journal d'audit n'a pas pu être chargé.","empty":"Aucun événement d'audit enregistré pour l'instant.","actor":"Acteur","target":"Cible"},"tools":{"title":"Accès aux outils","description":"Autoriser tout le monde à appeler les serveurs d'outils. Si c'est désactivé, seuls les administrateurs le peuvent.","saved":"Accès aux outils mis à jour","saveFailed":"Impossible de mettre à jour l'accès aux outils.","lockedByEnv":"Verrouillé par une variable d'environnement sur ce serveur."},"voice":{"title":"Accès vocal","description":"Détermine qui peut utiliser les fonctions vocales. Les administrateurs y ont toujours accès.","lockedByEnv":"Fixé par une variable d’environnement","saved":"Accès vocal mis à jour","saveFailed":"Échec de la mise à jour de l’accès vocal","features":{"stt":"Reconnaissance vocale","tts":"Synthèse vocale","voiceMode":"Mode vocal","voiceCloning":"Clonage de voix"}},"mfaPolicy":{"title":"Politique de double authentification","description":"Indique si les comptes doivent effectuer une deuxième étape de connexion.","requireAll":"Exiger la double authentification pour tous","requireAllHint":"Les utilisateurs sans deuxième facteur devront le configurer à leur prochaine connexion.","lockedByEnv":"Fixé par MFA_REQUIRED_MODE.","saved":"Politique de double authentification enregistrée.","saveFailed":"La politique de double authentification n'a pas pu être enregistrée."},"mfaReset":"Réinitialiser la double authentification","mfaResetConfirm":"Supprimer le deuxième facteur de {{name}} ? La connexion par mot de passe et une nouvelle configuration resteront possibles.","mfaResetSuccess":"Double authentification supprimée pour {{name}}.","mfaResetNothing":"{{name}} n'avait pas de double authentification.","mfaResetFailed":"La réinitialisation a échoué.","ollamaProvider":{"title":"Fournisseur Ollama","description":"Lorsqu'il est désactivé, l'application arrête complètement de rechercher Ollama — aucune vérification de santé, aucun avertissement. L'endpoint peut pointer vers n'importe quelle passerelle compatible Ollama.","saved":"Paramètres du fournisseur Ollama enregistrés","saveFailed":"Impossible d'enregistrer les paramètres du fournisseur Ollama","baseUrlLabel":"URL de l'endpoint Ollama"}}`),usageAnalytics:{eyebrow:`Administration`,title:`Utilisation des fournisseurs`,description:`Suivez les appels API sortants et la consommation des modèles sur les plugins activés de cette instance.`,days:`{{count}} jours`,refresh:`Actualiser l'utilisation`,loadFailed:`L'utilisation des fournisseurs n'a pas pu être chargée.`,metrics:{calls:`Appels`,tokens:`Jetons`},cards:{calls:`Appels API`,callsDetail:`Sur {{count}} utilisateur(s) actif(s)`,tokens:`Jetons signalés`,tokensDetail:`Utilisation signalée sur {{count}} appel(s)`,success:`Taux de réussite`,successDetail:`{{count}} appel(s) échoué(s)`,latency:`Latence moyenne`,latencyDetail:`Temps de bout en bout du fournisseur`,coverage:`{{percent}} % des appels indiquent une utilisation de jetons`},activity:{title:`Consommation au fil du temps`,callsDescription:`Requêtes quotidiennes par modèle`,tokensDescription:`Jetons signalés chaque jour par modèle`,chartLabel:`Graphique quotidien des {{metric}} du fournisseur`,compareHint:`Survolez un modèle ou donnez-lui le focus pour suivre sa courbe. Sélectionnez-le pour le garder en surbrillance.`,showAll:`Afficher tous les modèles`,highlightModel:`Mettre {{model}} en surbrillance`,highlightedModel:`{{model}} en surbrillance`,allModels:`Tous les modèles`,exploreDay:`Explorer l’utilisation quotidienne`,topModels:`Les 12 modèles les plus utilisés sont affichés par défaut. Sélectionnez un modèle ci-dessous pour suivre sa courbe individuellement.`,noTokens:`Aucun jeton signalé pendant cette période`,breakdownUnavailable:`La répartition par modèle n’est pas disponible pour cette période.`,peak:`Jour de pointe`,dayTotal:`Total quotidien`,loadingModel:`Chargement de {{model}}…`},models:{title:`Consommation par modèle`,description:`Les modèles générant le plus de trafic sur cette période.`,model:`Modèle`,success:`Succès`,latency:`Latence`,share:`Part des appels`,notCharted:`Sélectionnez ce modèle pour le charger dans le graphique`},providers:{title:`Trafic des plugins activés`,description:`Volume de requêtes, fiabilité et temps de réponse par fournisseur.`,share:`{{percent}} % des appels`,failures:`{{count}} en échec ou annulés`,models:`Modèles : {{count}}`,noTokens:`Aucun jeton signalé`},capabilities:{title:`Répartition des capacités`,characters:`{{count}} caractères`,bytes:`{{count}} octets`,images:`{{count}} images`,jobs:`{{count}} tâches vidéo`,inputs:`{{count}} entrées`,reportedTokens:`{{count}} jetons signalés`},empty:{title:`Aucun appel fournisseur pour le moment`,description:`Les appels apparaîtront ici une fois qu'un plugin activé aura traité des requêtes de chat, Work, d'embedding, d'image, de parole, de son ou de vidéo.`},privacyNote:`L'utilisation est mesurée sur le serveur à la limite du plugin sortant. Libre WebUI stocke le fournisseur, le modèle, le minutage, le statut et les compteurs signalés — jamais les prompts, les réponses, les points de terminaison, les identifiants ou les corps d'erreur du fournisseur. Les totaux de jetons incluent uniquement les appels où le fournisseur a renvoyé des métadonnées d'utilisation.`,heatmap:{title:`Une année d'activité`,description:`Appels quotidiens aux fournisseurs sur l'année écoulée, colorés selon le modèle le plus utilisé chaque jour.`,calls:`appels`,noCalls:`Aucun appel`,other:`Autres modèles`,less:`Moins`,more:`Plus`,yearTotal:`{{formatted}} appels sur la dernière année`}},systemPage:{eyebrow:`Administration`,title:`Système`,description:`Surveillez la machine et l'environnement d'exécution hébergeant cette instance de Libre WebUI.`,updated:`Mis à jour le {{date}}`,refresh:`Actualiser les informations système`,loadFailed:`Les informations système n'ont pas pu être chargées.`,cards:{uptime:`Temps d'activité de l'hôte`,uptimeDetail:`En cours d'exécution depuis le {{date}}`,memory:`Mémoire utilisée`,memoryDetail:`{{used}} sur {{total}}`,freeSpace:`Espace libre`,freeSpaceDetail:`{{label}} · {{total}} au total`,containers:`Conteneurs en cours d'exécution`,containersDetail:`{{total}} conteneur(s) connu(s) de Docker`,dockerUnavailable:`Docker indisponible`,unavailable:`Indisponible`},host:{title:`Hôte et environnement d'exécution`,description:`Détails du système d'exploitation, du processeur et du processus Libre WebUI.`,container:`Environnement d'exécution de conteneurs`,native:`Runtime natif`,hostname:`Nom d'hôte`,operatingSystem:`Système d'exploitation`,processor:`Processeur`,logicalCpus:`CPU logiques`,loadAverage:`Charge moyenne · 1 / 5 / 15 min`,libreVersion:`Libre WebUI`,nodeVersion:`Node.js`,process:`Processus`,workingDirectory:`Répertoire de travail`},memory:{title:`Mémoire`,description:`Mémoire système visible au runtime et utilisation par le processus de l'application.`,usedOf:`{{used}} utilisés sur {{total}}`,free:`{{value}} libres`,processRss:`RSS du processus`,heapUsed:`Tas V8 utilisé`,heapTotal:`Tas V8 total`,external:`Mémoire externe`},storage:{title:`Stockage`,description:`Espace disponible pour le système de fichiers du runtime et les données persistantes de l'application.`,used:`{{value}} utilisés`,free:`{{value}} libres`,empty:`Les informations sur le système de fichiers sont indisponibles dans ce runtime.`},docker:{title:`Docker`,description:`Statut en lecture seule de Docker Engine et liste réduite des conteneurs.`,connected:`Connecté`,unavailable:`Indisponible`,unavailableDetail:`Les diagnostics de Docker Engine sont indisponibles.`,socketStatus:`Socket local : {{status}}`,mounted:`monté`,notMounted:`non monté`,running:`En cours d'exécution`,stopped:`Arrêté`,paused:`En pause`,total:`Total`,version:`Version`,host:`Hôte`,architecture:`Architecture`,cpus:`CPUs`,memory:`Mémoire`,container:`Conteneur`,image:`Image`,state:`État`,created:`Créé`,empty:`Docker est connecté et aucun conteneur n'est actuellement listé.`},network:{title:`Réseau`,description:`Interfaces, adresses et compteurs de trafic Linux visibles à l'exécution.`,internal:`interne`,empty:`Aucune interface réseau n'est visible pour l'environnement d'exécution de l'application.`},securityNote:`Cette page est réservée aux administrateurs. Le serveur renvoie uniquement des résumés opérationnels : il n'expose pas les variables d'environnement, les identifiants, les étiquettes Docker, les points de montage, les commandes de conteneur ou les charges utiles d'inspection. Lorsque Libre WebUI s'exécute dans un conteneur, les détails du CPU et de la mémoire au niveau de l'hôte proviennent de Docker Engine lorsque son socket local est disponible ; les autres valeurs décrivent l'environnement d'exécution de l'application.`,work:{title:`Work`,description:`Bacs à sable de tous les utilisateurs`,access:`Accès`,accessAdmins:`Administrateurs uniquement`,accessAllUsers:`Tous les utilisateurs`,runtimeAvailable:`Disponible`,runtimeUnavailable:`Indisponible`,activeRuntimes:`Environnements actifs`,pendingCleanups:`Nettoyages en attente`,orphans:`Conteneurs orphelins`,owner:`Propriétaire`,task:`Tâche`,state:`État`,preview:`Aperçu`,terminals:`Terminaux`,updated:`Mis à jour`,stateRunning:`En cours`,stateStopped:`Arrêté`,stateStarting:`Démarrage`,stateUnknown:`Inconnu`,noTasks:`Aucune tâche Work pour l'instant.`},recovery:{title:`Exercices de restauration`,scheduleOn:`S'exécute automatiquement toutes les {{hours}} h — chaque exercice sauvegarde, restaure dans une copie isolée et vérifie le résultat.`,scheduleOff:`Non planifié — définissez RECOVERY_DRILL_INTERVAL_HOURS pour des exercices automatiques.`,teamUnsupported:`Les exercices couvrent le profil solo (SQLite) ; le profil équipe utilise la CLI de sauvegarde coordonnée.`,runNow:`Lancer un exercice`,running:`En cours…`,passed:`Exercice de restauration réussi.`,failed:`L'exercice de restauration a échoué.`,lastPassed:`Dernière réussite`,restoreTime:`Temps de restauration (RTO)`,drillSpacing:`Espacement des exercices (RPO)`,archiveSize:`Taille de l'archive`,lastFailed:`Dernier exercice échoué le {{date}}`,originManual:`Manuel`,originScheduled:`Planifié`,columns:{when:`Quand`,origin:`Origine`,status:`Statut`,restore:`Restauration`},status:{passed:`Réussi`,failed:`Échoué`,running:`En cours`}}},chatHistory:{label:`Historique de la conversation`,jumpToTurn:`Aller au tour {{index}} sur {{total}}`},chatMessage:{you:`Vous`,assistant:`Assistant`,system:`Système`,conversationSummary:`Résumé de la conversation`,restoreCompacted:`Restaurer les messages résumés`,restoreFailed:`Impossible de restaurer les messages résumés`,copy:`Copier`,copyMessage:`Copier le message`,copied:`Copié !`,regenerate:`Régénérer`,regenerateResponse:`Régénérer la réponse`,edit:`Modifier`,editSystemMessage:`Modifier le message système`,saveChanges:`Enregistrer les modifications`,cancelEditing:`Annuler la modification`,saveAndSubmit:`Enregistrer et envoyer`,goodResponse:`Bonne réponse`,badResponse:`Mauvaise réponse`,delete:`Supprimer`,deleteConfirm:`Supprimer ce message ?`,branch:`Branche`,speaking:`Lecture...`,speakMessage:`Lire le message`,stopSpeaking:`Arrêter la lecture`,showMore:`Voir plus`,showLess:`Voir moins`,thinking:`Réflexion`,thoughtFor:`A réfléchi pendant {{duration}}`,hiddenLines:`{{count}} lignes masquées`,systemMessagePlaceholder:`Entrez votre message système...`,fullSizeImage:`Image en taille réelle`,startConversation:`Démarrer une conversation`,startConversationDescription:`Envoyez un message pour commencer à discuter avec votre assistant IA. Posez des questions, obtenez de l'aide pour le code ou ayez une conversation naturelle.`,scrollToBottom:`Défiler vers le bas`,newMessages:`Nouveaux messages`,feedbackTags:{accuracy:`Exactitude`,style:`Style`,incomplete:`Incomplet`,harmful:`Nuisible`,formatting:`Mise en forme`},feedbackComment:`Ajouter un commentaire…`},imageGallery:{title:`Galerie d'images`,noImages:`Aucune image`,noImagesHint:`Générez votre première image en utilisant le panneau de droite`,delete:`Supprimer`,download:`Télécharger`,deleteConfirm:`Êtes-vous sûr de vouloir supprimer cette image ?`,deleteSuccess:`Image supprimée`,deleteFailed:`Échec de la suppression de l'image`,downloadFailed:`Échec du téléchargement de l'image`,loadMore:`Charger plus ({{current}} sur {{total}})`,loadFailed:`Échec du chargement de la galerie`},imageGeneration:{title:`Générer une image`,prompt:`Description`,promptPlaceholder:`Décrivez l'image que vous souhaitez créer...`,model:`Modèle`,selectModel:`Sélectionnez un modèle`,noModels:`Aucun modèle de génération d'images disponible`,configurePlugin:`Configurez un plugin avec support de génération d'images`,size:`Taille`,quality:`Qualité`,style:`Style`,generate:`Générer`,generating:`Génération...`,success:`Image générée avec succès`,failed:`Échec de la génération de l'image`,enterPrompt:`Veuillez entrer une description`,promptTooLong:`Le prompt dépasse la longueur maximale de {{max}} caractères`},mediaGeneration:{title:`Générer des médias`,description:`Créer une vidéo, un son, de la musique ou de la parole avec un fournisseur de médias activé.`,image:`Image`,video:`Vidéo`,audio:`Audio`,sound:`Son`,speech:`Parole`,model:`Modèle`,voice:`Voix ou ID de voix`,cloneVoice:`Cloner une voix de référence`,cloneVoiceDescription:`Générer cette parole à partir d'un enregistrement de référence plutôt que d'une voix prédéfinie.`,referenceAudio:`Audio de référence`,referenceTranscript:`Transcription exacte de la référence`,referenceTranscriptPlaceholder:`Saisissez exactement ce qui est prononcé dans l'enregistrement de référence…`,referenceAudioTooLarge:`L'audio de référence doit avoir une taille maximale de {{max}}.`,cloneConsent:`Ne clonez une voix qu'avec l'autorisation de la personne qui parle. L'enregistrement est envoyé au fournisseur sélectionné pour cette génération et n'est pas conservé par Libre WebUI.`,saveVoiceProfile:`Enregistrer comme voix réutilisable`,saveVoiceProfileDescription:`Conservez cet enregistrement de référence et sa transcription de façon sécurisée. Libre WebUI les envoie au fournisseur sélectionné pour chaque lot de parole utilisant cette voix.`,voiceProfileName:`Nom de la voix enregistrée`,voiceProfileNamePlaceholder:`Par exemple, Ma voix`,voiceStorageConsent:`Je confirme avoir l’autorisation de la personne qui parle pour cloner et enregistrer cette voix. La référence restera enregistrée jusqu’à ce que je la supprime.`,resolution:`Résolution`,aspectRatio:`Format d'image`,duration:`Durée`,providerDefault:`Par défaut du fournisseur`,generateAudio:`Générer l'audio avec la vidéo si pris en charge`,prompt:`Invite`,text:`Texte à prononcer`,videoPlaceholder:`Décrivez la scène, le mouvement, la caméra et l'éclairage...`,audioPlaceholder:`Saisissez le texte que la voix doit prononcer...`,soundPlaceholder:`Décrivez le son, la musique, l'atmosphère ou la réponse vocale souhaitée...`,generate:`Générer`,generating:`Génération… cela peut prendre plusieurs minutes`,success:`Média généré et enregistré dans Imagine`,successWithSavedVoice:`Le média a été généré et «\xA0{{name}}\xA0» est maintenant disponible dans les réglages de la parole`,failed:`Échec de la génération du média`,loadFailed:`Échec du chargement des fournisseurs de médias`,noModels:`Aucun modèle {{kind}} n'est disponible. Activez un fournisseur compatible et enregistrez d'abord ses identifiants.`,consentTtl:{label:`Durée du consentement`,never:`Jusqu’à ce que je le retire`,days30:`30 jours`,days90:`90 jours`,days365:`Un an`}},mediaGallery:{itemCount:`{{count}} éléments`,empty:`Aucun média généré pour le moment`,emptyHint:`Générez une image, une vidéo ou un clip vocal et il apparaîtra ici.`,filters:{all:`Tous`,image:`Images`,video:`Vidéos`,audio:`Audio`}},errorBoundary:{title:`Une erreur s'est produite`,description:`Nous avons rencontré une erreur inattendue. Veuillez actualiser la page.`,tryAgain:`Actualiser la page`,goHome:`Retour à l'accueil`,errorDetails:`Détails de l'erreur (Développement)`},documents:{title:`Documents`,upload:`Envoyer un document`,uploading:`Envoi...`,noDocuments:`Aucun document envoyé`,uploadHint:`Envoyez des documents à utiliser dans vos conversations`,delete:`Supprimer`,deleteConfirm:`Êtes-vous sûr de vouloir supprimer ce document ?`,deleteSuccess:`Document supprimé`,deleteFailed:`Échec de la suppression du document`,uploadSuccess:`Document envoyé avec succès`,uploadFailed:`Échec de l'envoi du document`,types:`Formats supportés : PDF, TXT, MD, DOCX`,unsupportedFileType:`Ce type de fichier n'est pas pris en charge`,fileSizeTooLarge:`La taille du fichier doit être inférieure à 10 Mo`,uploadSuccessWithName:`Document "{{name}}" envoyé avec succès`,removeSuccess:`Document supprimé avec succès`,removeFailed:`Échec de la suppression du document`,removeError:`Une erreur s'est produite lors de la suppression du document`,clickToUpload:`Cliquez pour envoyer`,orDragAndDrop:`ou glissez-déposez`,fileTypesAndSize:`Fichiers PDF, Office, Markdown, HTML, code, CSV, image et audio jusqu'à 10 Mo`,uploadedDocuments:`Documents envoyés`,removeDocument:`Supprimer le document`,fullContextToggle:`Envoyer les documents complets`,fullContextEstimate:`≈ {{tokens}} jetons`,fullContextTooLarge:`Les documents joints dépassent la limite de contexte complet, la recherche a donc été utilisée`,fullDocument:`Document complet`},ttsButton:{speak:`Lire`,stop:`Arrêter`,speaking:`Lecture...`,generateFailed:`Échec de la génération de la parole`,playbackFailed:`Échec de la lecture audio`,stopSpeaking:`Arrêter la lecture`,preparingSpeech:`Préparation de la parole...`,generatingSpeech:`Génération de la parole...`,bufferingSpeech:`Mise en mémoire tampon...`,enableAudio:`Activer l’audio et lire à voix haute`,enableAudioShort:`Activer l’audio`,readAloud:`Lire à voix haute`},artifacts:{title:`Artefacts`,code:`Code`,preview:`Aperçu`,copy:`Copier le code`,copied:`Copié !`,download:`Télécharger`,expand:`Agrandir`,collapse:`Réduire`,openInNewTab:`Ouvrir dans un nouvel onglet`,invalidSvg:`Contenu SVG invalide`,invalidJson:`Contenu JSON invalide`,previewMode:`Mode aperçu`,codeMode:`Mode code`,copyContent:`Copier le contenu`,openInPanel:`Ouvrir dans le panneau`,created:`Créé le`,closePanelEsc:`Fermer le panneau (Échap)`,copyButton:`Copier`,dragEdgeToResize:`Faites glisser le bord pour redimensionner`,previewUnavailable:`Preview unavailable`,previewUnavailableDescription:`This artifact does not contain renderable preview content. Switch to code view to inspect the source.`,versionOf:`Version {{current}} sur {{total}}`,previousVersion:`Version précédente`,nextVersion:`Version suivante`},personaImportExport:{title:`Importer et exporter des personas`,description:`Exportez vos personas pour les partager ou importez des personas d'autres utilisateurs`,exportPersonas:`Exporter des personas`,importPersonas:`Importer des personas`,noPersonasToExport:`Aucun persona à exporter`,personasAvailable:`{{count}} persona disponible`,personasAvailable_plural:`{{count}} personas disponibles`,exportAll:`Tout exporter`,uploadJsonFile:`Envoyer un fichier JSON`,pasteJsonLabel:`Coller les données JSON`,pasteJsonPlaceholder:`Collez les données JSON du persona ici...`,importing:`Importation...`,importButton:`Importer le(s) persona(s)`,expectedFormat:`Format JSON attendu :`,exportSuccess:`Persona "{{name}}" exporté avec succès`,exportFailed:`Échec de l'exportation du persona`,exportAllSuccess:`Tous les {{count}} personas ont été exportés avec succès`,exportAllFailed:`Échec de l'exportation des personas`,pasteJsonData:`Veuillez coller les données JSON du persona`,importMultipleSuccess:`{{count}} personas importés avec succès`,importMultipleFailed:`Échec de l'importation de {{count}} personas`,importNoneFailed:`Échec de l'importation de tous les personas`,importSuccess:`Persona importé avec succès`,importFailed:`Échec de l'importation du persona`},generationStats:{details:`Détails`,promptTokens:`Tokens du prompt :`,generatedTokens:`Tokens générés :`,totalTokens:`Tokens totaux :`,speed:`Vitesse :`,promptEval:`Éval. du prompt :`,generation:`Génération :`,modelLoad:`Chargement du modèle :`,totalTime:`Temps total :`,generatedAt:`Généré à :`},userMenu:{loggedOut:`Déconnexion réussie`,pictureUpdated:`Photo de profil mise à jour`,failedUpdateAvatar:`Échec de la mise à jour de l'avatar`,failedUpdatePicture:`Échec de la mise à jour de la photo de profil`,noEmail:`Aucun e-mail fourni`,changePicture:`Changer la photo`,settings:`Paramètres`,userManagement:`Gestion des utilisateurs`,signOut:`Se déconnecter`,changeProfilePicture:`Changer la photo de profil`},pluginManager:{title:`Gestionnaire de plugins`,upload:`Télécharger`,addJson:`Ajouter JSON`,browseHF:`Parcourir HF Hub`,confirmDelete:`Voulez-vous vraiment supprimer ce plugin ?`,uploading:`Téléchargement du plugin...`,pasteJson:`Collez le JSON du plugin ici...`,installPlugin:`Installer le plugin`,loading:`Chargement des plugins...`,noPlugins:`Aucun plugin installé`,noPluginsDescription:`Téléchargez un fichier plugin ou ajoutez un plugin depuis JSON pour commencer.`,active:`Actif`,id:`ID`,endpoint:`Endpoint`,activate:`Activer`,deactivate:`Désactiver`,activePlugin:`Plugin actif`,activePluginDescription:`Toutes les requêtes de chat passeront par ce plugin`,variables:{title:`Variables`,save:`Enregistrer`,saving:`Enregistrement...`,saved:`Variables enregistrées`,saveFailed:`Échec de l'enregistrement`,resetDefaults:`Réinitialiser`,reset:`Variables réinitialisées`,resetFailed:`Échec de la réinitialisation des variables`,sensitiveSet:`Valeur définie (entrez une nouvelle valeur pour modifier)`,showValue:`Afficher la valeur de {{label}}`,hideValue:`Masquer la valeur de {{label}}`,connection:`Connexion`,advanced:`Paramètres avancés`,inherited:`Utiliser la valeur par défaut du fournisseur`,inheritedValue:`Utiliser la valeur par défaut du fournisseur ({{value}})`,enabled:`Activé`,disabled:`Désactivé`,required:`Une valeur est requise`,fullApiEndpoint:`URL complète du point de terminaison API`,endpointHelp:`Saisissez l'URL de requête complète, y compris son chemin d'opération (par exemple, /v1/chat/completions), et non uniquement l'URL de base du fournisseur.`,invalidUrl:`Saisissez une URL complète de point de terminaison API valide, par exemple https://provider.example/v1/chat/completions`,insecureUrl:`Les points de terminaison API doivent utiliser HTTP ou HTTPS.`,httpWarning:`HTTP ne chiffre pas les identifiants ni le trafic. Ne l'utilisez que sur un réseau de confiance.`,invalidBaseUrl:`Les URL de base ne peuvent pas contenir de chaîne de requête ni de fragment.`,invalidApiPath:`Doit commencer par / et ne contenir ni URL, ni requête, ni fragment, ni segment ..`,tooLong:`La valeur est trop longue`}},huggingface:{title:`Explorateur de modèles HuggingFace`,subtitle:`Parcourez et sélectionnez des modèles depuis le Hub`,searchPlaceholder:`Rechercher des modèles...`,filters:`Filtres`,task:`Tâche`,sortBy:`Trier par`,noModels:`Aucun modèle trouvé`,adjustSearch:`Essayez d'ajuster votre recherche ou vos filtres`,gated:`Restreint`,selected:`Sélectionné`,select:`Sélectionner`,refresh:`Actualiser`,modelsFound:`modèles trouvés`},demoMode:{title:`Mode démo`,github:`GitHub`},libreClaw:{title:`Agents`,subtitle:`Exécutions d'agents locales, approbations, planifications, mémoire, outils et usage.`,dashboard:`Tableau de bord`,connection:{disconnectedTitle:`Le daemon Libre Claw n'est pas connecté`,disconnectedDescription:`Démarrez-le localement avec <command>libre-claw start</command> ou définissez <env>LIBRE_CLAW_BASE_URL</env> dans l'environnement backend.`},status:{connected:`Connecté`,disconnected:`Déconnecté`,activeRuns:`{{count}} actif`,activeRuns_plural:`{{count}} actifs`},states:{queued:`En attente`,running:`En cours`,blocked:`Bloqué`,done:`Terminé`,failed:`Échec`,cancelled:`Annulé`},startRun:{title:`Démarrer une exécution d'agent`,placeholder:`Demandez à Libre Claw d'inspecter un dépôt, corriger un bug, faire une revue, planifier un rapport...`,chatRun:`Exécution chat`,goalMode:`Mode objectif`,providerOverride:`Fournisseur à utiliser`,modelOverride:`Modèle à utiliser`,run:`Exécuter`},modelRoute:{title:`Routage du modèle`,providerPlaceholder:`fournisseur`,modelPlaceholder:`modèle`,persistGlobal:`Enregistrer dans la configuration globale de Libre Claw`,saveModel:`Enregistrer le modèle`,theme:`Thème Libre Claw`,saveTheme:`Enregistrer le thème`},runs:{title:`Exécutions`,empty:`Aucune exécution Libre Claw pour le moment.`},timeline:{title:`Chronologie de l'exécution`,empty:`Sélectionnez une exécution pour inspecter ses événements.`,streaming:`Streaming...`,assistantResponse:`Réponse de l'assistant`,resultOk:`ok`,resultError:`erreur`,labels:{userMessage:`Message utilisateur`,toolCall:`Appel d'outil`,toolResult:`Résultat d'outil`,approvalRequest:`Demande d'approbation`,approvalResponse:`Réponse d'approbation`,runStarted:`Exécution démarrée`,runFinished:`Exécution terminée`,usage:`Usage`,error:`Erreur`}},approvals:{needed:`Approbation requise`,allowOnce:`Autoriser une fois`,alwaysAllowTool:`Toujours autoriser l'outil`,deny:`Refuser`,toolApprovalRequested:`Approbation d'outil demandée`},automations:{title:`Automatisations`,namePlaceholder:`Nom`,schedulePlaceholder:`daily 09:00`,promptPlaceholder:`Prompt de l'automatisation`,create:`Créer`,empty:`Aucune automatisation Libre Claw planifiée.`,runNow:`Exécuter maintenant`,pause:`Mettre en pause`,resume:`Reprendre`,routes:{report:`Rapport`,telegram:`Telegram`},status:{active:`Active`,paused:`En pause`}},usageFallback:{title:`Usage et fallback`,usage:`Usage`,fallbackRoute:`Route de fallback`,noUsage:`Aucun enregistrement d'usage pour le moment.`},metrics:{provider:`Fournisseur`,model:`Modèle`,input:`Entrée`,output:`Sortie`,cached:`Cache`,reasoning:`Raisonnement`,cost:`Coût`,tool:`Outil`,resolution:`Résolution`,state:`État`,stopReason:`Raison d'arrêt`,tokens:`{{formatted}} token`,tokens_plural:`{{formatted}} tokens`},fallbacks:{tool:`outil`,unknown:`inconnu`,resolved:`résolu`,unknownError:`Erreur inconnue`},toasts:{loadStatusFailed:`Impossible de charger l'état de Libre Claw`,enterTask:`Entrez une tâche pour Libre Claw`,runStarted:`Exécution Libre Claw démarrée`,startRunFailed:`Impossible de démarrer l'exécution Libre Claw`,runCancelled:`Exécution annulée`,cancelRunFailed:`Impossible d'annuler l'exécution`,approved:`Approuvé`,denied:`Refusé`,resolvePermissionFailed:`Impossible de résoudre l'approbation`,providerModelRequired:`Le fournisseur et le modèle sont requis`,modelUpdated:`Modèle Libre Claw mis à jour`,updateModelFailed:`Impossible de mettre à jour le modèle`,themeUpdated:`Thème Libre Claw mis à jour`,updateThemeFailed:`Impossible de mettre à jour le thème`,automationRequired:`Le nom, la planification et le prompt de l'automatisation sont requis`,automationCreated:`Automatisation créée`,createAutomationFailed:`Impossible de créer l'automatisation`,automationUpdated:`Automatisation mise à jour`,updateAutomationFailed:`Impossible de mettre à jour l'automatisation`}},work:JSON.parse(`{"title":"Travail","subtitle":"Espaces de travail isolés pour les modèles","tasks":{"title":"Tâches de travail","subtitle":"Espaces de travail locaux persistants","new":"Nouvelle tâche","emptyTitle":"Aucune tâche de travail pour le moment","empty":"Vos tâches de travail apparaîtront ici après l'envoi du premier message.","untitled":"Tâche sans titre","actions":"Actions de la tâche","delete":"Supprimer la tâche","deleteNamed":"Supprimer {{title}}","deleteConfirm":"Supprimer définitivement « {{title}} » et son espace de travail ?","close":"Fermer les tâches de travail","open":"Ouvrir les tâches de travail","rename":"Titre de la tâche","loading":"Chargement de la tâche…","notFound":"Cette tâche de travail n'est pas disponible","back":"Démarrer une nouvelle tâche","status":"État : {{status}}"},"landing":{"title":"Démarrer une nouvelle tâche de travail","description":"Attribuez à un modèle local ou provenant d'un fournisseur configuré un espace de travail isolé et persistant. Il peut inspecter des fichiers, exécuter des outils et reprendre là où il s'était arrêté à votre retour.","isolated":"Isolé","isolatedBody":"Chaque tâche dispose de son propre conteneur et de ses fichiers.","durable":"Persistant","durableBody":"Revenez plus tard à sa conversation et à son espace de travail.","controlled":"Contrôlé","controlledBody":"L'environnement d'exécution et les fichiers de la tâche restent isolés de l'hôte."},"composer":{"placeholder":"Décrivez ce que vous souhaitez créer ou modifier…","model":"Modèle de travail","noModels":"Aucun modèle compatible avec le mode Travail","cancel":"Arrêter","send":"Exécuter","hint":"Chaque tâche conserve ses propres fichiers et son historique. Vérifiez la sortie du modèle avant de l'utiliser.","remoteTitle":"Fournisseur distant","remoteHint":"La conversation et la sortie des outils sont envoyées au service configuré. Une exécution autonome peut effectuer plusieurs appels au fournisseur et entraîner des frais. Les fichiers de l'espace de travail restent locaux, sauf si un outil renvoie leur contenu.","remoteDismiss":"Masquer","remoteDismissLabel":"Masquer l'avis sur le fournisseur distant","remoteDismissFailed":"Impossible d'enregistrer la préférence du fournisseur distant.","noModelSelected":"Aucun modèle compatible avec le mode Travail n'est sélectionné.","mentionAgents":"Mentionner un agent"},"conversation":{"ready":"Espace de travail prêt","empty":"Poursuivez la tâche ci-dessous. Cette conversation et ses fichiers restent associés à cet espace de travail.","loadOlder":"Charger les messages précédents","openFile":"Ouvrir {{name}}","delegatedBy":"Délégué par {{agent}}","reportFrom":"Rapport de {{agent}}"},"status":{"preparing":"Préparation de l'espace de travail isolé…","running":"Travail dans l'espace de travail local…"},"statusLabels":{"idle":"Inactif","thinking":"Réflexion en cours","complete":"Terminé","needsInput":"Saisie requise","error":"Erreur"},"live":{"connecting":"Connexion aux mises à jour en direct…","reconnecting":"Reconnexion aux mises à jour en direct…","unavailable":"Mises à jour en direct indisponibles","newActivity":"Nouvelle activité","skillsLoaded":"Compétences d’espace de travail · {{count}}","skillWorked":"Cette procédure a fonctionné","skillFailed":"Cette procédure a échoué","skillTraceSaved":"noté","stats":{"title":"Résumé de l’exécution","rounds":"Tours","toolCalls":"Appels d’outils","screenshots":"Captures d’écran","fences":"Coupures","checksPassed":"Vérifications réussies","checksPending":"Vérifications en attente","stallNudges":"Rappels de blocage","ambiguityNudges":"Rappels de réancrage","stoppedBy":"Arrêté par"}},"runtime":{"unavailable":"Environnement d'exécution indisponible","ready":"Environnement d'exécution prêt","readyOllama":"Docker prêt","readyPlugin":"Docker + plugin prêts","readyHybrid":"Docker + modèles prêts","reason":"Docker et un fournisseur de modèles disponible via Ollama ou une extension sont requis."},"workspace":{"label":"Vues de l'espace de travail","files":"Fichiers","activity":"Activité","preview":"Aperçu","resize":"Redimensionner la conversation et l'espace de travail","resizeHint":"Faites glisser pour redimensionner. Utilisez les touches fléchées pour un réglage précis. Double-cliquez ou appuyez sur Entrée pour réinitialiser.","splitSize":"Conversation {{conversation}} %, espace de travail {{workspace}} %","terminal":"Terminal","git":"Git","screen":"Écran","agent":"Agent"},"files":{"discard":"Ignorer les modifications de fichier non enregistrées ?","leaveWithDraft":"Quitter ce fichier ? Votre modification non enregistrée restera disponible comme brouillon dans le navigateur.","up":"Dossier parent","back":"Retour aux fichiers","empty":"Ce dossier ne contient encore aucun fichier.","select":"Sélectionnez un fichier pour l'inspecter et le modifier.","editorLabel":"Éditeur de fichier : {{path}}","format":"Formater","formatted":"Code formaté.","formatFailed":"Impossible de formater ce fichier.","formatShortcut":"Formater (Maj+Alt+F)","formatTooLarge":"Le formatage est limité aux fichiers de moins de 100 000 caractères et 4 000 lignes.","formatUnsupported":"Le formatage n'est pas disponible pour ce type de fichier.","saveShortcut":"Enregistrer (⌘/Ctrl+S)","highlightPaused":"La coloration en direct est suspendue pour les fichiers volumineux afin de préserver la fluidité de l'édition.","plainTextLarge":"Texte brut · fichier volumineux","changes":"Modifications","changesSince":"Ce qui a changé depuis le dernier tour","diffLabel":"Modifications depuis le dernier tour : {{path}}","diffFolded":"{{count}} lignes inchangées"},"activity":{"empty":"Les commandes, les opérations sur les fichiers et les résultats des outils apparaîtront ici.","toolActivity":"Activité des outils","details":"Détails","kinds":{"message":"Message","toolCall":"Appel d'outil","toolResult":"Résultat d'outil","error":"Erreur"}},"preview":{"command":"Commande de démarrage facultative","start":"Démarrer l'aperçu","stop":"Arrêter l'aperçu","open":"Ouvrir","starting":"Démarrage de l'aperçu…","frameTitle":"Aperçu de l'espace de travail","failed":"Impossible de démarrer l'aperçu. Consultez Activité, puis essayez une autre commande.","empty":"Démarrez l'application dans cet espace de travail pour l'inspecter ici."},"mobile":{"surface":"Vue de la tâche","conversation":"Conversation","workspace":"Espace de travail"},"toasts":{"runFailed":"Impossible de démarrer la tâche de travail.","updateFailed":"Impossible de mettre à jour cette tâche.","renameFailed":"Impossible de renommer cette tâche.","cancelled":"L'exécution de la tâche a été arrêtée.","cancelFailed":"Impossible d'arrêter l'exécution de la tâche.","deleteFailed":"Impossible de supprimer cette tâche de travail.","saveFailed":"Impossible d'enregistrer ce fichier.","saved":"Fichier enregistré.","previewFailed":"Impossible de démarrer l'aperçu.","previewStopFailed":"Impossible d'arrêter l'aperçu."},"terminal":{"connecting":"Ouverture d’un shell dans le bac à sable…","closed":"Session de terminal terminée.","failed":"La session de terminal n’a pas pu démarrer.","reconnect":"Se reconnecter","unavailable":"Le terminal interactif n’est pas disponible dans ce déploiement.","blockedByRun":"Le modèle utilise ce conteneur. Le terminal s’ouvrira à la fin du tour.","taskRunning":"Tour du modèle en cours"},"policy":{"label":"Politique d'exécution","default":"Par défaut (limites globales)","setupHint":"Les politiques d'exécution débloquent le Work Computer — un bureau avec navigateur observable pour l'agent — et des limites par tâche.","setupLink":"Configurer les politiques Work"},"git":{"actionFailed":"L'action Git a échoué.","blockedByPreview":"Arrêtez l'aperçu avant de modifier l'état Git.","blockedByRun":"Les actions d'écriture Git se déverrouillent à la fin du tour du modèle.","branchCreated":"{{name}} créée.","branchSwitched":"Basculé vers {{name}}.","clean":"L'arbre de travail est propre.","commit":"Committer les changements indexés","commitMessage":"Message du commit","committed":"Commit créé.","detached":"HEAD détaché","diff":"Aperçu du diff","diffFailed":"Impossible de charger ce diff.","history":"Historique local","initialize":"Initialiser Git","initializeDescription":"Créez un dépôt local pour le statut, les diffs, les branches et les commits. Aucun identifiant distant n'est connecté.","initialized":"Dépôt Git initialisé.","loadFailed":"Impossible de charger le statut Git.","localOnly":"Git local uniquement. Push, pull et pull requests nécessitent un courtier d'identifiants de confiance séparé.","newBranch":"Nouvelle branche locale","noCommits":"Aucun commit pour l'instant.","noDiff":"Aucun diff textuel pour l'instant. Les fichiers non suivis apparaissent après indexation.","notInitialized":"Git n'est pas initialisé","selectChange":"Sélectionnez un fichier modifié pour inspecter son diff.","selectPath":"Sélectionner {{path}}","stageAll":"Tout indexer","stageSelected":"Indexer {{count}}","staged":"Changements indexés.","switchBranch":"Changer de branche locale","changes":"Modifications","createBranch":"Créer","filterFiles":"Filtrer les fichiers modifiés","noFilterMatches":"Aucun fichier modifié ne correspond à ce filtre.","allChanges":"Tous les changements","diffTruncated":"Ce diff est tronqué.","binaryFile":"Fichier binaire, pas de diff texte."},"hostWorkspace":{"hint":"Laissez vide pour un espace isolé, ou pointez la tâche vers un dossier de cette machine.","label":"Dossier de l'espace de travail (facultatif)","warning":"La tâche peut lire et écrire ce dossier directement. Laissez vide pour un espace isolé."},"screen":{"starting":"Démarrage du Work Computer…","disconnected":"L'écran est déconnecté.","reconnect":"Reconnecter","viewOnly":"Observation","takeOver":"Prendre la main","handBack":"J'ai terminé","youHaveControl":"Vous avez la main","otherHasControl":"{{name}} a la main","agentWaiting":"L'agent vous demande de prendre la main","teach":"Enseigner une tâche","recording":"Enregistrement","teachSave":"Enregistrer","teachDiscard":"Abandonner","teachNamePlaceholder":"Nommez cette tâche","teachSaved":"Enregistré comme compétence \\"{{name}}\\"","watchingLearning":"L'agent observe et apprend","unmute":"Activer le son","mute":"Couper le son"},"computerSetup":{"title":"Work Computer","description":"Donnez à votre agent un vrai bureau avec navigateur — tout se configure automatiquement.","building":"Construction de l'image du bureau... la première fois prend quelques minutes.","enable":"Activer","retry":"Réessayer"},"agents":{"title":"Agents"},"persona":{"label":"Recruter comme agent (facultatif)","none":"Aucune persona (tâche ponctuelle)","hint":"Cette tâche devient un agent nommé : elle conserve la persona, reste épinglée dans la barre latérale et affiche une ligne d'état après chaque exécution.","description":"Choisissez une persona pour transformer cette tâche en agent permanent avec sa propre identité."},"agent":{"openScreen":"Ouvrir la vue plein écran","personaLine":"Persona : {{name}}","screen":"Écran","routines":"Routines","addRoutine":"Routine","noRoutines":"Aucune routine pour l'instant. Une routine exécute une instruction selon un horaire, dans l'espace de travail de cet agent.","routineToggleFailed":"Impossible de mettre à jour la routine.","routineSaveFailed":"Impossible d'enregistrer la routine.","skills":"Compétences enseignées","noSkills":"Rien d'enseigné pour l'instant. Utilisez Teach dans l'onglet Écran pour démontrer une procédure une fois ; elle devient une compétence rejouable.","skillToggleFailed":"Impossible de mettre à jour la compétence.","unread":"Nouvelle activité","approvals":"Revue automatique","approvalsHint":"Lorsque l'option est active, les commandes, les suppressions et déplacements de fichiers ainsi que les actions sur l'ordinateur sont mis en pause jusqu'à votre approbation.","approvalsPolicyForced":"La politique Work de cet agent exige une approbation pour les actions à effet de bord.","approvalsToggleFailed":"Impossible de mettre à jour les approbations.","approvalRuleLine":"Toujours autorisé","approvalRuleDelete":"Supprimer la règle","approvalRuleDeleteFailed":"Impossible de supprimer la règle."},"approval":{"title":"Approbation requise","description":"L'agent veut exécuter {{tool}}. Cette action peut modifier des données ou agir en dehors de la conversation.","allowOnce":"Autoriser une fois","allowAlways":"Toujours autoriser","deny":"Refuser","failed":"Impossible d'envoyer la décision."}}`),personaBackground:{label:`Image d'arrière-plan`,uploadBackgroundImage:`Télécharger une image d'arrière-plan`,dragAndDrop:`Glissez-déposez une image ou cliquez pour parcourir`,chooseImage:`Choisir une image`,uploading:`Téléchargement...`,enterImageUrl:`Ou entrez l'URL de l'image`,supportedFormats:`Formats supportés : JPG, PNG, GIF, WebP (max 5Mo). Les images paysage larges fonctionnent mieux.`,customBackground:`Image d'arrière-plan personnalisée`,clickToChange:`Cliquez pour modifier ou supprimer`,removed:`Arrière-plan supprimé`,uploaded:`Arrière-plan téléchargé avec succès`,invalidFile:`Veuillez sélectionner un fichier image valide`,fileTooLarge:`La taille de l'image d'arrière-plan doit être inférieure à 5Mo`,readFailed:`Échec de la lecture du fichier image`,uploadFailed:`Échec du téléchargement de l'image d'arrière-plan`},modelSelector:{searchInstalled:`Rechercher les modèles installés...`,searchOllama:`Rechercher dans la bibliothèque Ollama...`,searchHuggingFace:`Rechercher sur HuggingFace...`,selectModel:`Sélectionner un modèle`,personas:`Personas`,ollamaModels:`Modèles Ollama`,pluginModels:`Modèles de plugins`,actions:`Actions`,installed:`Installé`,use:`Utiliser`,pull:`Télécharger`,pullRestricted:`L'installation des modèles est réservée aux administrateurs sur cette instance.`,adminOnlyPull:`Admins uniquement`,legacyProvider:`fournisseur non enregistré`,providerNotRecorded:`Fournisseur non enregistré`,providerUnavailable:`fournisseur indisponible`,reselectProvider:`resélectionnez un fournisseur pour épingler ce modèle`,unavailable:`indisponible`,unavailableSelections:`Sélections indisponibles`,agentModels:`Agents`},whatsNew:{title:`Nouveautés`,releaseNotes:`Notes de version`,cta:`C'est parti`,starAsk:`Vous aimez Libre WebUI ? Laissez une étoile sur GitHub`},notes:{title:`Notes`,new:`Nouvelle note`,untitled:`Sans titre`,empty:`Aucune note pour le moment`,selectOrCreate:`Sélectionnez une note ou créez-en une`,contentPlaceholder:`Écrivez en Markdown…`,saved:`Enregistré`,saveFailed:`Impossible d'enregistrer la note`,createFailed:`Impossible de créer une note`,deleteConfirm:`Supprimer cette note ?`,deleteFailed:`Impossible de supprimer la note`,tools:`Outils de note`,revisions:`Historique`,attachments:`Pièces jointes`,share:`Partager`,assist:`Édition IA`,noRevisions:`Pas encore de versions antérieures`,restore:`Restaurer`,revisionRestored:`Version restaurée`,revisionRestoreFailed:`Impossible de restaurer cette version`,addAttachment:`Ajouter une pièce jointe`,noAttachments:`Pas encore de pièces jointes`,attachmentAdded:`Pièce jointe ajoutée`,attachmentFailed:`Impossible d'ajouter la pièce jointe`,attachmentDownloadFailed:`Impossible de télécharger la pièce jointe`,shareUsernamePlaceholder:`Nom d'utilisateur`,permissionRead:`Peut consulter`,permissionWrite:`Peut modifier`,shareAction:`Partager`,notShared:`Pas encore partagée`,revokeShare:`Révoquer l'accès`,shareHint:`Les notes partagées apparaissent dans la liste de notes de l'autre personne. L'accès peut être révoqué à tout moment.`,shareUserNotFound:`Aucun utilisateur avec ce nom`,shareAdded:`Partagée avec {{username}}`,shareFailed:`Impossible de partager la note`,assistPlaceholder:`Décrivez la modification, p. ex. resserrer le résumé ou corriger la grammaire`,assistGenerate:`Proposer une modification`,assistNoModel:`Sélectionnez d'abord un modèle dans le Chat`,assistNoChanges:`Le modèle n'a proposé aucune modification`,assistApply:`Appliquer`,assistDiscard:`Abandonner`,assistApplied:`Modification appliquée`,assistRevisionHint:`L'application conserve la version précédente dans l'historique ; toute modification IA reste réversible.`,assistFailed:`Impossible de générer la modification`,pin:`Épingler la note`,unpin:`Désépingler la note`,pinned:`Épinglée`,export:`Télécharger en Markdown`,sharedWithYou:`Partagée avec vous`},calendar:{title:`Calendrier`,today:`Aujourd'hui`,month:`Mois`,week:`Semaine`,previous:`Précédent`,next:`Suivant`,newEvent:`Nouvel événement`,editEvent:`Modifier l'événement`,eventTitle:`Titre`,titlePlaceholder:`Titre de l'événement`,date:`Date`,start:`Début`,end:`Fin`,allDay:`Toute la journée`,repeat:`Répéter`,repeatNone:`Ne se répète pas`,repeatDaily:`Quotidien`,repeatWeekly:`Hebdomadaire`,repeatMonthly:`Mensuel`,repeatYearly:`Annuel`,notes:`Notes`,more:`+{{n}} autres`,loadFailed:`Impossible de charger le calendrier`,saveFailed:`Impossible d'enregistrer l'événement`,deleteFailed:`Impossible de supprimer l'événement`,day:`Jour`,calendarLabel:`Calendrier`,personalCalendar:`Personnel`,reminderLabel:`Rappel`,reminderNone:`Aucun rappel`,reminderMinutes:`{{minutes}} minutes avant`,reminderHour:`1 heure avant`,reminderDay:`1 jour avant`,sharedReadOnly:`Cet événement est partagé avec vous en lecture seule.`,sharedBadge:`partagé`,shareCalendar:`Partager le calendrier`,newCalendarPlaceholder:`Nouveau calendrier…`,calendarSaveFailed:`Le calendrier n'a pas pu être enregistré`,exportFailed:`Le calendrier n'a pas pu être exporté`,importFailed:`Le fichier n'a pas pu être importé`,importResult:`{{total}} événements importés`,importIcs:`Importer`,exportIcs:`Exporter`},automations:{title:`Automatisations`,tab:{automations:`Automatisations`,runs:`Exécutions`},newAutomation:`Nouvelle automatisation`,editAutomation:`Modifier l'automatisation`,empty:`Aucune automatisation pour l'instant. Créez-en une pour exécuter une tâche selon un horaire.`,loadFailed:`Impossible de charger les automatisations`,saveFailed:`Impossible d'enregistrer l'automatisation`,actionFailed:`L'action a échoué`,runQueued:`Exécution démarrée`,status:{active:`Active`,paused:`En pause`},nextRun:`Prochaine exécution {{when}}`,actions:`Actions`,pause:`Mettre en pause`,resume:`Reprendre`,runNow:`Exécuter maintenant`,openChat:`Ouvrir la discussion`,noRuns:`Aucune exécution pour l'instant`,deletedAutomation:`Automatisation supprimée`,runHistory:`Historique des exécutions (30 derniers jours)`,succeeded:`réussies`,failed:`échouées`,form:{name:`Nom`,namePlaceholder:`Mon automatisation`,triggers:`Déclencheurs`,addTrigger:`Ajouter un déclencheur`,instructions:`Instructions`,instructionsPlaceholder:`Que faut-il exécuter selon cet horaire ?`,model:`Modèle`,modelAuto:`Auto`,notification:`Notification`,notifyApp:`Application`,notifyOff:`Désactivée`,frequency:`Fréquence`,time:`Heure`,minute:`Minute`,fromHour:`De`,toHour:`À`,weekday:`Jour de la semaine`,dayOfMonth:`Jour`,month:`Mois`,target:`Exécuter comme`,targetChat:`Session de chat`,targetWork:`Tâche Work`,workPolicy:`Politique Work`,workPolicyDefault:`Par défaut (limites globales)`,taskBoundNote:`Cette routine s'exécute dans l'espace de travail et la conversation de l'agent, avec le modèle et l'environnement de l'agent.`},kind:{once:`Une fois`,hourly:`Toutes les heures`,daily:`Quotidien`,weekly:`Hebdomadaire`,monthly:`Mensuel`,yearly:`Annuel`},trigger:{once:`Une fois le {{when}}`,hourly:`Toutes les heures à :{{minute}}`,daily:`Tous les jours à {{time}}`,weekly:`Chaque {{day}} à {{time}}`,monthly:`Le {{day}} de chaque mois à {{time}}`,yearly:`Chaque année le {{date}} à {{time}}`},finishedNotification:`{{n}} exécution(s) d’automatisation terminée(s)`,templatesTitle:`Modèles`,templates:{morningBrief:{name:`Brief du matin`,description:`Commencez la journée avec les titres et les priorités.`},newsDigest:{name:`Résumé de l'actualité IA`,description:`Sorties de modèles, recherche et financements qui comptent.`},weeklyReview:{name:`Bilan hebdomadaire`,description:`Clôturez la semaine : réussites, points en suspens, priorités.`},monthlyReport:{name:`Rapport mensuel`,description:`Un plan de rapport d'état le premier de chaque mois.`}},openTask:`Ouvrir la tâche`,webhook:{title:`Déclencheur webhook`,enabledHint:`Les systèmes externes peuvent déclencher cette automatisation avec le secret. La rotation invalide le secret précédent.`,disabledHint:`Laissez un système externe (CI, cron, domotique) déclencher cette automatisation via un POST et un secret.`,rotate:`Renouveler le secret`,enable:`Activer`,disable:`Désactiver`,revealHint:`Affiché une seule fois. Envoyez-le comme jeton Bearer ou dans l’en-tête X-Libre-Webhook-Secret.`,failed:`Impossible de mettre à jour le webhook.`}},home:{active:`actif`,continue:`Continuer`,start:`Commencer`,explore:`Explorer`},palette:{empty:`Aucun résultat.`,placeholder:`Rechercher chats, Work, actions…`,toggleTheme:`Changer de thème`,actions:`Actions`,chats:`Conversations`,search:`Rechercher`,settings:`Paramètres`,work:`Travail`,messages:`Messages`,notes:`Notes`,documents:`Documents`},tabs:{actions:`Actions de l'onglet`,close:`Fermer l'onglet`,closeAll:`Fermer tous les onglets`,closeOthers:`Fermer les autres onglets`,closeRight:`Fermer les onglets à droite`,home:`Accueil`,label:`Onglets ouverts`,new:`Nouvel onglet`,newWork:`Nouveau Work`,chat:`Chat`,newChat:`Nouvelle conversation`,work:`Travail`},tools:{arguments:`Arguments`,result:`Résultat`,callStatus:{awaiting_approval:`En attente d'approbation`,running:`En cours`,succeeded:`Terminé`,failed:`Échec`,denied:`Refusé`,cancelled:`Annulé`},approval:{title:`Approbation d'outil requise`,description:`Le modèle veut exécuter {{tool}} sur {{server}}. Cet appel peut modifier des données en dehors de cette conversation.`,builtinSource:`ce serveur`,allowOnce:`Autoriser une fois`,allowSession:`Autoriser dans cette conversation`,allowAlways:`Toujours autoriser`,deny:`Refuser`}},promptsPage:{title:`Prompts`,description:`Modèles de prompts réutilisables avec des variables typées. Tapez / dans la zone de saisie pour en insérer un.`,newPrompt:`Nouveau prompt`,editPrompt:`Modifier le prompt`,empty:`Aucun prompt pour l'instant`,emptyHint:`Un prompt est un modèle de message enregistré. Une fois créé, taper /slug dans la zone de saisie l'insère et demande les variables qu'il déclare.`,loadFailed:`Impossible de charger vos prompts.`,saved:`Prompt enregistré`,saveFailed:`Impossible d'enregistrer le prompt.`,deleted:`Prompt supprimé`,deleteFailed:`Impossible de supprimer le prompt.`,deleteTitle:`Supprimer le prompt`,deleteConfirm:`Supprimer "{{title}}" ? Son historique de versions disparaît aussi.`,exportFailed:`Impossible d'exporter le prompt.`,imported:`Prompt importé`,importFailed:`Impossible d'importer ce fichier.`,historyFailed:`Impossible de charger l'historique des versions.`,rolledBack:`Prompt restauré`,rollbackFailed:`Impossible de restaurer le prompt.`,versionLabel:`v{{version}}`,updated:`Mis à jour {{when}}`,form:{slug:`Slug`,slugPlaceholder:`weekly-report`,slugHint:`Utilisé sous la forme /slug dans la zone de saisie.`,slugInvalid:`Minuscules, chiffres et tirets uniquement.`,title:`Titre`,titlePlaceholder:`Rapport hebdomadaire`,description:`Description`,descriptionPlaceholder:`À quoi sert ce prompt`,content:`Contenu`,contentPlaceholder:`Rédigez le prompt. Entourez de doubles accolades tout ce que vous voulez remplir plus tard.`,contentHint:`Un espace réservé est un nom entre doubles accolades. Déclarez-le ci-dessous pour lui donner un libellé ou une valeur par défaut.`,tags:`Étiquettes`,tagsPlaceholder:`recherche, rédaction`,variables:`Variables`,variablesHint:`Facultatif. Déclarez ici un espace réservé pour lui donner un libellé, une valeur par défaut ou une liste de choix.`,variableName:`Nom`,variableType:`Type`,variableLabel:`Libellé`,variableDefault:`Valeur par défaut`,variableRequired:`Obligatoire`,variableOptions:`Options`,variableOptionsPlaceholder:`Choix séparés par des virgules`,addVariable:`Ajouter une variable`,removeVariable:`Retirer la variable`},variableTypes:{text:`Texte`,number:`Nombre`,select:`Choix`,boolean:`Oui ou non`},history:{open:`Historique des versions`,title:`Historique de {{title}}`,subtitle:`La restauration enregistre la révision choisie comme nouvelle version. Rien n'est écrasé.`,empty:`Aucune version antérieure pour l'instant.`,current:`Actuelle`,rollback:`Restaurer`,rollingBack:`Restauration...`},templatesTitle:`Partir d'un modèle`,templates:{reviewPr:{name:`Revue de pull request`,description:`Revue de code structurée, avec une exigence réglable.`},summarize:{name:`Résumer pour un public`,description:`Résumé en puces adapté au lecteur.`},translate:{name:`Traduire`,description:`Traduction qui préserve le ton et la mise en forme.`},explainCode:{name:`Expliquer le code`,description:`Explication pas à pas, plus les cas limites et les risques.`}}},skillsPage:{title:`Compétences`,description:`Jeux d'instructions nommés que le modèle peut charger à la demande pendant qu'il travaille.`,newSkill:`Nouvelle compétence`,editSkill:`Modifier la compétence`,empty:`Aucune compétence pour l'instant`,emptyHint:`Une compétence est un jeu d'instructions que le modèle ne charge qu'au besoin. Mentionnez $slug dans un message, ou laissez le modèle y accéder via l'outil load_skill.`,loadFailed:`Impossible de charger vos compétences.`,saved:`Compétence enregistrée`,saveFailed:`Impossible d'enregistrer la compétence.`,toggleFailed:`Impossible de modifier la compétence.`,deleted:`Compétence supprimée`,deleteFailed:`Impossible de supprimer la compétence.`,deleteTitle:`Supprimer la compétence`,deleteConfirm:`Supprimer "{{name}}" ? Son historique de versions disparaît aussi.`,exportFailed:`Impossible d'exporter la compétence.`,imported:`Compétence importée`,importFailed:`Impossible d'importer ce fichier.`,historyFailed:`Impossible de charger l'historique des versions.`,rolledBack:`Compétence restaurée`,rollbackFailed:`Impossible de restaurer la compétence.`,versionLabel:`v{{version}}`,updated:`Mise à jour {{when}}`,form:{slug:`Slug`,slugPlaceholder:`code-review`,slugHint:`Utilisé sous la forme $slug quand vous mentionnez la compétence.`,slugInvalid:`Minuscules, chiffres et tirets uniquement.`,name:`Nom`,namePlaceholder:`Revue de code`,description:`Description`,descriptionPlaceholder:`Quand utiliser cette compétence`,descriptionHint:`C'est le manifeste que voit le modèle. Rédigez-le pour qu'il sache quand la compétence s'applique sans avoir à la charger.`,instructions:`Instructions`,instructionsPlaceholder:`Instructions en Markdown que le modèle lit une fois cette compétence chargée.`,instructionsHint:`Chargées seulement quand la compétence sert : leur longueur ne coûte rien avant ça.`,enabled:`Activée`,enabledHint:`Les compétences désactivées restent enregistrées mais ne sont jamais proposées au modèle.`},history:{open:`Historique des versions`,title:`Historique de {{name}}`},templatesTitle:`Partir d'un modèle`,templates:{citeSources:{name:`Citer les sources`,description:`Références numérotées avec URL, aucune affirmation sans source.`},releaseNotes:{name:`Style notes de version`,description:`Entrées groupées, tournées vers l'utilisateur, sans identifiants internes.`},meetingNotes:{name:`Format compte rendu de réunion`,description:`Décisions, actions à mener et questions ouvertes à partir d'une transcription.`}},importUrl:{button:`Depuis une URL`,title:`Importer une compétence depuis une URL`,hint:`Collez un lien skills.sh ou GitHub, owner/repo/skill, ou un lien direct vers un fichier SKILL.md.`,placeholder:`https://skills.sh/owner/repo/skill ou owner/repo/skill`,overwrite:`Écraser ma compétence si le slug existe déjà`},files:{title:`Fichiers inclus`,hint:`Documents de référence et scripts que le modèle lit à la demande avec read_skill_file.`,add:`Ajouter un fichier`,empty:`Aucun fichier inclus pour le moment.`,pathPlaceholder:`docs/reference.md`,contentPlaceholder:`Contenu du fichier…`,loadFailed:`Échec du chargement du fichier`,saveFailed:`Échec de l'enregistrement du fichier`,deleteFailed:`Échec de la suppression du fichier`},folderImport:{button:`Depuis un dossier`,missingSkillMd:`Le dossier doit contenir un fichier SKILL.md`,done:`Compétence importée avec {{count}} fichiers inclus`}},toolsPage:{title:`Outils`,description:`Les serveurs d'outils que le modèle peut appeler, et les approbations que vous leur avez accordées.`,approvalNotice:`Les outils qui modifient des données en dehors de la conversation demandent toujours une approbation, sauf si vous leur avez accordé une approbation permanente ou valable pour la conversation.`,registerServer:`Enregistrer un serveur`,registerHint:`Libre WebUI lit le serveur une fois et fige les outils qu'il expose. Actualisez le serveur plus tard pour récupérer les changements.`,editServer:`Modifier le serveur`,empty:`Aucun serveur d'outils`,emptyHintAdmin:`Enregistrez un serveur OpenAPI ou MCP pour donner au modèle quelque chose à appeler.`,emptyHintUser:`Aucun administrateur n'a encore partagé de serveur d'outils avec vous.`,loadFailed:`Impossible de charger les serveurs d'outils.`,saved:`Serveur d'outils enregistré`,saveFailed:`Impossible d'enregistrer le serveur d'outils.`,deleted:`Serveur d'outils supprimé`,deleteFailed:`Impossible de supprimer le serveur d'outils.`,deleteTitle:`Supprimer le serveur d'outils`,deleteConfirm:`Supprimer "{{name}}" ? Tout le monde perd l'accès à ses outils.`,refresh:`Actualiser les outils`,refreshed:`Outils relus depuis le serveur`,refreshFailed:`Impossible de lire le serveur.`,toolsLoadFailed:`Impossible de charger les outils épinglés.`,overrideFailed:`Impossible de modifier l'outil.`,pinnedTools:`Outils épinglés`,noPinnedTools:`Ce serveur n'a exposé aucun outil.`,sideEffect:`Effet de bord`,sideEffectOverride:`Effet de bord`,specRevision:`Révision {{revision}}`,credential:`Identifiant personnel`,credentialHint:`Stocké chiffré et utilisé uniquement pour vos propres appels à ce serveur.`,credentialPlaceholder:`Collez votre token`,credentialSet:`Identifiant défini`,credentialMissing:`Identifiant requis`,credentialSaved:`Identifiant enregistré`,credentialSaveFailed:`Impossible d'enregistrer l'identifiant.`,credentialRemove:`Supprimer`,credentialRemoved:`Identifiant supprimé`,credentialRemoveFailed:`Impossible de supprimer l'identifiant.`,builtinSource:`Ce serveur`,kinds:{openapi:`OpenAPI`,mcp:`MCP`},authModes:{none:`Aucune authentification`,bearer:`Token Bearer`,header:`En-tête personnalisé`},accessModes:{"admins-only":`Administrateurs uniquement`,"all-users":`Tout le monde`,granted:`Seulement les personnes autorisées`},form:{name:`Nom`,namePlaceholder:`API météo`,kind:`Type`,description:`Description`,descriptionPlaceholder:`Ce que fait ce serveur`,baseUrl:`URL de base`,specUrl:`URL de la spécification`,specUrlHint:`Facultatif. L'URL de base est utilisée si le champ reste vide.`,authMode:`Authentification`,authHeader:`Nom de l'en-tête`,accessMode:`Qui peut l'utiliser`,timeoutMs:`Délai d'attente (ms)`,maxResponseBytes:`Réponse max (octets)`,serverDefault:`Valeur par défaut du serveur`,enabled:`Activé`,enabledHint:`Les serveurs désactivés restent enregistrés mais ne sont jamais proposés au modèle.`},approvals:{title:`Approbations permanentes`,description:`Outils que vous avez autorisés à s'exécuter sans redemander. Révoquez-en un et il redemandera la prochaine fois.`,empty:`Aucune approbation permanente.`,revoke:`Révoquer`,revoked:`Approbation révoquée`,revokeFailed:`Impossible de révoquer l'approbation.`,scope:{once:`Une fois`,session:`Cette conversation`,always:`Toujours`}},templatesTitle:`Partir d'un modèle`,templates:{exa:{name:`Exa`,description:`Recherchez sur le Web et récupérez des pages avec Exa.`},internalOpenApi:{name:`API interne`,description:`Un point de départ pour votre propre service OpenAPI.`},mcpServer:{name:`Serveur MCP`,description:`Un point de départ pour un serveur MCP via Streamable HTTP.`}}},composer:{promptMenu:{label:`Bibliothèque de prompts`,empty:`Aucun prompt pour l’instant — créez-en un dans Paramètres → Prompts, ou commencez à saisir un slug.`},skillMenu:{label:`Compétences`,empty:`Aucune compétence pour l’instant — créez-en une dans Paramètres → Compétences.`},variables:{title:`Remplir {{title}}`,insert:`Insérer`,cancel:`Annuler`,required:`{{name}} est obligatoire`},toolsMenu:{enable:`Utiliser les outils pour ce message`,builtin:`Outils intégrés`,servers:`Serveurs d’outils`,hint:`Les appels à effets de bord demandent toujours une approbation avant de s’exécuter.`}},share:{title:`Partager « {{name}} »`,subtitle:`Donner accès à des personnes ou des groupes. Vous seul gérez les partages.`,kindUser:`Utilisateur`,kindGroup:`Groupe`,usernamePlaceholder:`Nom d'utilisateur exact`,groupPlaceholder:`Nom de groupe exact`,permissionRead:`Peut consulter`,permissionWrite:`Peut modifier`,action:`Partager`,empty:`Pas encore partagé.`,hint:`Saisissez le nom exact de l'utilisateur ou du groupe. Les destinataires le voient dans leur espace ; la révocation retire l'accès immédiatement.`,revoke:`Révoquer l'accès`,added:`Partagé avec {{name}}`,failed:`Le partage a échoué`,userNotFound:`Aucun utilisateur avec ce nom`,groupNotFound:`Aucun groupe avec ce nom`},channels:{title:`Canaux`,browsePublic:`Parcourir les canaux publics`,newDm:`Nouveau message direct`,newChannel:`Nouveau canal`,empty:`Aucun canal pour le moment. Créez-en un ou parcourez les canaux publics.`,selectPrompt:`Choisissez un canal pour commencer`,pins:`Épinglés`,members:`Membres`,settings:`Paramètres du canal`,sendFailed:`Le message n'a pas pu être envoyé`,uploadFailed:`Le fichier n'a pas pu être téléversé`,memberAdded:`Membre ajouté`,memberAddFailed:`Impossible d'ajouter cet utilisateur`,attach:`Joindre un fichier`,askModel:`Poser ce message à un modèle`,noModel:`Aucun modèle`,composerPlaceholder:`Écrire un message…`,thread:`Fil`,replyPlaceholder:`Répondre…`,invitePlaceholder:`Utilisateur à inviter`,roleOwner:`propriétaire`,removeMember:`Retirer du canal`,leave:`Quitter le canal`,noPins:`Rien d’épinglé pour le moment.`,noMessages:`Aucun message — dites bonjour.`,create:`Créer`,createFailed:`Le canal n'a pas pu être créé`,nameLabel:`Nom`,typeLabel:`Type`,typePublic:`Public — tout le monde peut rejoindre`,typePrivate:`Privé — sur invitation`,descriptionLabel:`Description`,openDm:`Ouvrir la conversation`,dmFailed:`La conversation n'a pas pu être ouverte`,dmHint:`Les messages directs restent privés entre vous deux.`,dmPlaceholder:`Nom d'utilisateur exact`,noPublic:`Aucun canal public à parcourir.`,joined:`Rejoint`,join:`Rejoindre`,save:`Enregistrer`,delete:`Supprimer le canal`,modelAuthor:`Modèle`,unknownAuthor:`Quelqu'un`,edited:`modifié`,deletedMessage:`Ce message a été supprimé`,modelThinking:`Le modèle réfléchit…`,react:`Ajouter une réaction`,reply:`Répondre dans le fil`,pin:`Épingler le message`,unpin:`Désépingler le message`,edit:`Modifier le message`,deleteMessage:`Supprimer le message`,replyCount:`{{total}} réponses`},notifications:{title:`Notifications`,empty:`Vous êtes à jour.`,markAllRead:`Tout marquer comme lu`,markRead:`Marquer comme lu`},voiceMode:{title:`Mode vocal`,open:`Démarrer le mode vocal`,close:`Fermer le mode vocal`,starting:`Démarrage…`,listening:`À l’écoute…`,muted:`Micro coupé`,transcribing:`Transcription…`,generating:`Réflexion…`,speaking:`Parle…`,mute:`Couper le micro`,unmute:`Réactiver le micro`,finishTurn:`J’ai fini de parler`,skipReply:`Passer la réponse`,microphoneFailed:`Micro indisponible`,transcriptionFailed:`Échec de la transcription`,replyTimeout:`La réponse a pris trop de temps`,unsupported:`Le mode vocal est indisponible`,unsupportedHint:`Le mode vocal nécessite un micro et un fournisseur de reconnaissance vocale ou la reconnaissance du navigateur.`},imageEdit:{title:`Modifier l’image`,prompt:`Décrire la modification`,promptPlaceholder:`Par exemple : remplacer le ciel par un coucher de soleil`,model:`Modèle`,apply:`Appliquer la modification`,maskHint:`Peignez les zones à repeindre ; laissez la toile intacte pour modifier toute l’image.`,brushSize:`Taille du pinceau`,clearMask:`Effacer le masque`,referenceImages:`Images de référence (jusqu’à {{total}})`,noModels:`Aucun modèle configuré ne prend en charge la retouche d’image.`,saved:`Image modifiée enregistrée dans la galerie`,failed:`Échec de la modification de l’image`,loadFailed:`Impossible de charger l’image source`},costs:{title:`Coûts et budgets`,description:`Prix des tarifs appliqués au journal d’utilisation ; les budgets surveillent ou plafonnent les dépenses.`,loadFailed:`Impossible de charger les données de coûts`,saveFailed:`Échec de l’enregistrement`,exportFailed:`Échec de l’export`,exportCsv:`Exporter en CSV`,totalSpend:`Dépense totale`,meteredEvents:`Événements tarifés`,unmeteredEvents:`Événements non tarifés`,topModel:`Modèle principal`,budgets:`Budgets`,noBudgets:`Aucun budget pour l’instant.`,budgetName:`Nom du budget`,principalId:`Identifiant utilisateur ou groupe`,addBudget:`Ajouter un budget`,deleteBudget:`Supprimer le budget`,budgetSaved:`Budget enregistré`,scope:{instance:`Instance entière`,user:`Utilisateur`,group:`Groupe`},period:{daily:`Quotidien`,weekly:`Hebdomadaire`,monthly:`Mensuel`},mode:{observe:`Observer`,soft:`Alerter`,hard:`Alerter et bloquer`},tariffs:`Tarifs`,noTariffs:`Aucun tarif — les coûts restent non tarifés tant qu’aucun prix n’est défini.`,plugin:`Plugin`,model:`Modèle`,modelOptional:`Modèle (facultatif)`,allModels:`Tous les modèles`,inputPerMillion:`Entrée $/M jetons`,outputPerMillion:`Sortie $/M jetons`,unitPrice:`Prix unitaire`,effectiveFrom:`En vigueur depuis`,addTariff:`Ajouter un tarif`,deleteTariff:`Supprimer le tarif`,tariffSaved:`Tarif enregistré`},evaluations:{title:`Évaluations`,description:`Duels d’arène à l’aveugle, classement Elo, jeux d’évaluation réutilisables et votre jeu de données de retours.`,loadFailed:`Impossible de charger les évaluations`,matchFailed:`Le duel d’arène a échoué`,voteRecorded:`Vote enregistré`,voteFailed:`Impossible d’enregistrer le vote`,saveFailed:`Échec de l’enregistrement`,exportFailed:`Échec de l’export`,setSaved:`Jeu d’évaluation enregistré`,runStarted:`Exécution lancée`,pickModel:`Choisir un modèle`,tabs:{arena:`Arène`,leaderboard:`Classement`,sets:`Jeux d’éval`,feedback:`Retours`},arenaModelA:`Modèle A`,arenaModelB:`Modèle B`,arenaPrompt:`Posez la même question aux deux modèles…`,startMatch:`Lancer le duel`,arenaHint:`Les identités des modèles restent cachées jusqu’au vote.`,candidate:`Réponse {{letter}}`,voteFirst:`La première est meilleure`,voteSecond:`La seconde est meilleure`,voteTie:`Égalité`,voteBothBad:`Les deux mauvaises`,model:`Modèle`,rating:`Score`,record:`Bilan`,votes:`Votes`,noVotes:`Aucun vote d’arène — lancez un duel pour construire le classement.`,newSet:`Nouveau jeu d’évaluation`,setName:`Nom du jeu`,setPrompts:`Un prompt par ligne…`,saveSet:`Enregistrer le jeu`,yourSets:`Vos jeux`,noSets:`Aucun jeu d’évaluation.`,itemCount:`{{total}} prompts`,run:`Exécuter`,deleteSet:`Supprimer le jeu`,cancelRun:`Annuler l’exécution`,exportRun:`Exporter l’exécution`,status:{queued:`En attente`,running:`En cours`,completed:`Terminée`,failed:`Échouée`,cancelled:`Annulée`},noFeedback:`Aucun retour — évaluez des réponses pour constituer votre jeu de données.`},passwordStrength:{levels:{weak:`Faible`,fair:`Moyen`,good:`Bon`,strong:`Fort`},checks:{minLength:`Au moins 12 caractères`,hasCase:`Majuscules et minuscules`,hasNumber:`Au moins un chiffre`,tooLong:`Au plus 72 octets`}},connectModels:{adminOnly:`Demandez à votre administrateur de connecter un fournisseur de modèles.`,skip:`Ignorer pour l'instant — je connecterai des modèles plus tard`,ollama:{status:{checking:`Vérification de la disponibilité…`,healthy:`En cours d'exécution et prêt pour les modèles locaux`,offline:`Non détecté sur cette machine`,disabled:`Désactivé — aucune vérification ne sera effectuée`},recheck:`Vérifier à nouveau`,enable:`Activer`,disable:`Arrêter de rechercher Ollama`,enabledToast:`Fournisseur Ollama activé`,disabledToast:`Vérifications Ollama désactivées — vous pouvez les réactiver dans les Paramètres`,settingsFailed:`Impossible de mettre à jour les paramètres Ollama`,offlineHint:`Installez Ollama depuis ollama.com et il sera détecté automatiquement — ou utilisez plutôt l'une des options ci-dessous. Si vous ne prévoyez pas d'utiliser Ollama, vous pouvez désactiver ses vérifications.`,healthyHint:`Ollama est connecté. Téléchargez un modèle depuis Modèles et vous serez prêt à discuter.`},local:{title:`Serveur local`,subtitle:`llama.cpp, vLLM, llama-swap, LM Studio, mlx-lm`,keyPlaceholder:`Clé API (optionnelle)`,test:`Tester la connexion`,testing:`Test en cours…`,reachable:`Connecté — {{count}} modèles trouvés`,unreachable:`Aucune API de modèles n'a répondu à cette adresse`,noModels:`L'endpoint a répondu mais n'a listé aucun modèle. Chargez un modèle sur votre serveur et retestez.`,enable:`Activer le fournisseur`,enabling:`Activation…`,enabled:`{{name}} connecté — ses modèles sont désormais disponibles`,enableFailed:`Impossible d'activer le fournisseur`},cloud:{title:`API cloud`,subtitle:`OpenAI, Anthropic, Groq, OpenRouter et bien d'autres`,keyPlaceholder:`Collez votre clé API {{name}}`,connect:`Connecter`,connecting:`Connexion…`,connected:`{{name}} connecté — ses modèles sont désormais disponibles`,saveFailed:`Impossible d'enregistrer la clé API`}}};export{e as default};
|