- Added a new route for connection issues, allowing users to navigate to a dedicated page when the server is unreachable. - Updated the RouterNotifier to manage navigation based on server connectivity status and authentication state. - Improved the handling of offline scenarios by integrating connectivity checks into the routing logic. - Enhanced localization support for connection issue messages in multiple languages. - Refactored the OfflineIndicator widget to streamline the display of connectivity status without unnecessary complexity.
294 lines
14 KiB
Plaintext
294 lines
14 KiB
Plaintext
{
|
||
"@@locale": "fr",
|
||
"appTitle": "Conduit",
|
||
"initializationFailed": "Échec de l'initialisation",
|
||
"retry": "Réessayer",
|
||
"back": "Retour",
|
||
"you": "Vous",
|
||
"loadingProfile": "Chargement du profil...",
|
||
"unableToLoadProfile": "Impossible de charger le profil",
|
||
"pleaseCheckConnection": "Veuillez vérifier votre connexion et réessayer",
|
||
"connectionIssueTitle": "Impossible d'atteindre votre serveur",
|
||
"@connectionIssueTitle": {
|
||
"description": "Titre affiché lorsque le serveur configuré est injoignable"
|
||
},
|
||
"connectionIssueSubtitle": "Reconnectez-vous pour continuer ou déconnectez-vous pour choisir un autre serveur.",
|
||
"@connectionIssueSubtitle": {
|
||
"description": "Sous-titre expliquant les actions possibles quand le serveur est injoignable"
|
||
},
|
||
"stillOfflineMessage": "Nous ne pouvons toujours pas joindre le serveur. Vérifiez votre connexion et réessayez.",
|
||
"@stillOfflineMessage": {
|
||
"description": "Message d'état après une tentative de reconnexion sans succès"
|
||
},
|
||
"account": "Compte",
|
||
"signOut": "Se déconnecter",
|
||
"endYourSession": "Terminer votre session",
|
||
"defaultModel": "Modèle par défaut",
|
||
"autoSelect": "Sélection automatique",
|
||
"loadingModels": "Chargement des modèles...",
|
||
"failedToLoadModels": "Échec du chargement des modèles",
|
||
"availableModels": "Modèles disponibles",
|
||
"noResults": "Aucun résultat",
|
||
"searchModels": "Rechercher des modèles...",
|
||
"errorMessage": "Une erreur s'est produite. Veuillez réessayer.",
|
||
"loginButton": "Connexion",
|
||
"menuItem": "Paramètres",
|
||
"dynamicContentWithPlaceholder": "Bienvenue, {name} !",
|
||
"itemsCount": "{count, plural, =0{Aucun élément} one{1 élément} other{{count} éléments}}",
|
||
"closeButtonSemantic": "Fermer",
|
||
"loadingContent": "Chargement du contenu",
|
||
"noItems": "Aucun élément",
|
||
"noItemsToDisplay": "Aucun élément à afficher",
|
||
"loadMore": "Charger plus",
|
||
"workspace": "Espace de travail",
|
||
"recentFiles": "Fichiers récents",
|
||
"knowledgeBase": "Base de connaissances",
|
||
"noFilesYet": "Pas encore de fichiers",
|
||
"uploadDocsPrompt": "Importez des documents à utiliser dans vos conversations avec Conduit",
|
||
"uploadFirstFile": "Importer votre premier fichier",
|
||
"attachments": "Pièces jointes",
|
||
"knowledgeBaseEmpty": "La base de connaissances est vide",
|
||
"createCollectionsPrompt": "Créez des collections de documents liés pour une référence facile",
|
||
"chooseSourcePhoto": "Choisir la source",
|
||
"takePhoto": "Prendre une photo",
|
||
"chooseFromGallery": "Choisir depuis vos photos",
|
||
"document": "Document",
|
||
"documentHint": "Fichier PDF, Word ou texte",
|
||
"uploadFileTitle": "Importer un fichier",
|
||
"fileUploadComingSoon": "Le téléversement de fichiers pour {type} arrive bientôt !",
|
||
"kbCreationComingSoon": "La création de la base de connaissances arrive bientôt !",
|
||
"backToServerSetup": "Retour à la configuration du serveur",
|
||
"connectedToServer": "Connecté au serveur",
|
||
"signIn": "Se connecter",
|
||
"enterCredentials": "Entrez vos identifiants pour accéder à vos conversations IA",
|
||
"credentials": "Identifiants",
|
||
"apiKey": "Clé API",
|
||
"usernameOrEmail": "Nom d'utilisateur ou e‑mail",
|
||
"password": "Mot de passe",
|
||
"signInWithApiKey": "Se connecter avec une clé API",
|
||
"connectToServer": "Se connecter au serveur",
|
||
"enterServerAddress": "Saisissez l'adresse de votre serveur Open-WebUI pour commencer",
|
||
"serverUrl": "URL du serveur",
|
||
"serverUrlHint": "https://votre-serveur.com",
|
||
"enterServerUrlSemantic": "Saisissez l'URL ou l'adresse IP de votre serveur",
|
||
"headerName": "Nom de l'en-tête",
|
||
"headerValue": "Valeur de l'en-tête",
|
||
"headerValueHint": "api-key-123 ou jeton Bearer",
|
||
"addHeader": "Ajouter l'en-tête",
|
||
"maximumHeadersReached": "Nombre maximal atteint",
|
||
"removeHeader": "Supprimer l'en-tête",
|
||
"connecting": "Connexion en cours...",
|
||
"connectToServerButton": "Se connecter au serveur",
|
||
"demoModeActive": "Mode démo activé",
|
||
"skipServerSetupTryDemo": "Ignorer la configuration et essayer la démo",
|
||
"enterDemo": "Entrer en démo",
|
||
"demoBadge": "Démo",
|
||
"serverNotOpenWebUI": "Ceci ne semble pas être un serveur Open-WebUI.",
|
||
"serverUrlEmpty": "L'URL du serveur ne peut pas être vide",
|
||
"invalidUrlFormat": "Format d'URL invalide. Veuillez vérifier votre saisie.",
|
||
"onlyHttpHttps": "Seuls les protocoles HTTP et HTTPS sont pris en charge.",
|
||
"serverAddressRequired": "Adresse du serveur requise (ex. 192.168.1.10 ou example.com).",
|
||
"portRange": "Le port doit être compris entre 1 et 65535.",
|
||
"invalidIpFormat": "Format d'IP invalide. Exemple : 192.168.1.10.",
|
||
"couldNotConnectGeneric": "Connexion impossible. Vérifiez l'adresse et réessayez.",
|
||
"weCouldntReachServer": "Impossible d'atteindre le serveur. Vérifiez la connexion et l'état du serveur.",
|
||
"connectionTimedOut": "Délai d'attente dépassé. Le serveur est peut-être occupé ou bloqué.",
|
||
"useHttpOrHttpsOnly": "Utilisez uniquement http:// ou https://.",
|
||
"loginFailed": "Échec de la connexion",
|
||
"invalidCredentials": "Nom d'utilisateur ou mot de passe invalide. Réessayez.",
|
||
"serverRedirectingHttps": "Le serveur redirige les requêtes. Vérifiez la configuration HTTPS.",
|
||
"unableToConnectServer": "Impossible de se connecter au serveur. Vérifiez votre connexion.",
|
||
"requestTimedOut": "Délai d'attente dépassé. Réessayez.",
|
||
"genericSignInFailed": "Connexion impossible. Vérifiez vos identifiants et le serveur.",
|
||
"skip": "Ignorer",
|
||
"next": "Suivant",
|
||
"done": "Terminé",
|
||
"onboardStartTitle": "Bonjour, {username}",
|
||
"onboardStartSubtitle": "Choisissez un modèle pour commencer. Touchez Nouveau chat à tout moment.",
|
||
"onboardStartBullet1": "Touchez le nom du modèle en haut pour changer",
|
||
"onboardStartBullet2": "Utilisez Nouveau chat pour réinitialiser le contexte",
|
||
"onboardAttachTitle": "Ajouter du contexte",
|
||
"onboardAttachSubtitle": "Ancrez les réponses avec l'Espace de travail ou des photos.",
|
||
"onboardAttachBullet1": "Espace de travail : PDF, documents, jeux de données",
|
||
"onboardAttachBullet2": "Photos : appareil photo ou galerie",
|
||
"onboardSpeakTitle": "Parlez naturellement",
|
||
"onboardSpeakSubtitle": "Touchez le micro pour dicter avec retour visuel.",
|
||
"onboardSpeakBullet1": "Arrêtez à tout moment ; le texte partiel est conservé",
|
||
"onboardSpeakBullet2": "Idéal pour des notes rapides ou de longs prompts",
|
||
"onboardQuickTitle": "Actions rapides",
|
||
"onboardQuickSubtitle": "Ouvrez le menu pour passer entre Chats, Espace de travail et Profil.",
|
||
"onboardQuickBullet1": "Touchez le menu pour accéder à Chats, Espace, Profil",
|
||
"onboardQuickBullet2": "Lancez Nouveau chat ou gérez les modèles depuis la barre"
|
||
,
|
||
"addAttachment": "Ajouter une pièce jointe",
|
||
"tools": "Outils",
|
||
"voiceInput": "Entrée vocale",
|
||
"messageInputLabel": "Saisie du message",
|
||
"messageInputHint": "Saisissez votre message",
|
||
"messageHintText": "Message...",
|
||
"stopGenerating": "Arrêter la génération",
|
||
"send": "Envoyer",
|
||
"sendMessage": "Envoyer le message",
|
||
"file": "Fichier",
|
||
"photo": "Photo",
|
||
"camera": "Appareil photo",
|
||
"apiUnavailable": "Service API indisponible",
|
||
"unableToLoadImage": "Impossible de charger l'image",
|
||
"notAnImageFile": "Ce n'est pas un fichier image : {fileName}",
|
||
"failedToLoadImage": "Échec du chargement de l'image : {error}",
|
||
"invalidDataUrl": "Format d'URL de données invalide",
|
||
"failedToDecodeImage": "Échec du décodage de l'image",
|
||
"invalidImageFormat": "Format d'image invalide",
|
||
"emptyImageData": "Données d'image vides"
|
||
,
|
||
"featureRequiresInternet": "Cette fonctionnalité nécessite une connexion Internet",
|
||
"messagesWillSendWhenOnline": "Les messages seront envoyés lorsque vous serez de nouveau en ligne",
|
||
"confirm": "Confirmer",
|
||
"cancel": "Annuler"
|
||
,
|
||
"ok": "OK",
|
||
"inputField": "Champ de saisie",
|
||
"captureDocumentOrImage": "Capturer un document ou une image",
|
||
"checkConnection": "Vérifier la connexion",
|
||
"openSettings": "Ouvrir les réglages",
|
||
"chooseDifferentFile": "Choisir un autre fichier",
|
||
"goBack": "Retour",
|
||
"technicalDetails": "Détails techniques",
|
||
"save": "Enregistrer",
|
||
"chooseModel": "Choisir le modèle",
|
||
"reviewerMode": "REVIEWER MODE",
|
||
"selectLanguage": "Sélectionner la langue",
|
||
"newFolder": "Nouveau dossier",
|
||
"folderName": "Nom du dossier",
|
||
"newChat": "Nouveau chat",
|
||
"more": "Plus",
|
||
"clear": "Effacer",
|
||
"searchHint": "Rechercher...",
|
||
"searchConversations": "Rechercher des conversations...",
|
||
"create": "Créer",
|
||
"folderCreated": "Dossier créé",
|
||
"failedToCreateFolder": "Échec de la création du dossier",
|
||
"movedChatToFolder": "\"{title}\" déplacé vers \"{folder}\"",
|
||
"@movedChatToFolder": {
|
||
"placeholders": {
|
||
"title": {"type": "String"},
|
||
"folder": {"type": "String"}
|
||
}
|
||
},
|
||
"failedToMoveChat": "Échec du déplacement du chat",
|
||
"failedToLoadChats": "Échec du chargement des chats",
|
||
"failedToUpdatePin": "Échec de la mise à jour de l'épingle",
|
||
"failedToDeleteChat": "Échec de la suppression du chat",
|
||
"manage": "Gérer",
|
||
"rename": "Renommer",
|
||
"delete": "Supprimer",
|
||
"renameChat": "Renommer le chat",
|
||
"enterChatName": "Saisir le nom du chat",
|
||
"failedToRenameChat": "Échec du renommage du chat",
|
||
"failedToUpdateArchive": "Échec de la mise à jour de l'archive",
|
||
"unarchive": "Désarchiver",
|
||
"archive": "Archiver",
|
||
"pin": "Épingler",
|
||
"unpin": "Détacher",
|
||
"recent": "Récent",
|
||
"system": "Système",
|
||
"english": "Anglais",
|
||
"deutsch": "Allemand",
|
||
"francais": "Français",
|
||
"italiano": "Italien",
|
||
"deleteMessagesTitle": "Supprimer les messages",
|
||
"deleteMessagesMessage": "Supprimer {count} messages ?",
|
||
"@deleteMessagesMessage": {
|
||
"placeholders": {
|
||
"count": {"type": "int"}
|
||
}
|
||
},
|
||
"routeNotFound": "Route introuvable : {routeName}",
|
||
"@routeNotFound": {
|
||
"placeholders": {
|
||
"routeName": {"type": "String"}
|
||
}
|
||
},
|
||
"deleteChatTitle": "Supprimer le chat",
|
||
"deleteChatMessage": "Ce chat sera supprimé définitivement.",
|
||
"deleteFolderTitle": "Supprimer le dossier",
|
||
"deleteFolderMessage": "Ce dossier et ses associations seront supprimés.",
|
||
"failedToDeleteFolder": "Échec de la suppression du dossier",
|
||
"aboutApp": "À propos de l’application",
|
||
"aboutAppSubtitle": "Informations et liens Conduit",
|
||
"web": "Web",
|
||
"imageGen": "Gén. image",
|
||
"pinned": "Épinglé",
|
||
"folders": "Dossiers",
|
||
"archived": "Archivé",
|
||
"appLanguage": "Langue de l'app",
|
||
"darkMode": "Mode sombre",
|
||
"webSearch": "Recherche Web",
|
||
"webSearchDescription": "Recherchez sur le web et citez les sources.",
|
||
"imageGeneration": "Génération d'images",
|
||
"imageGenerationDescription": "Créez des images à partir de vos prompts.",
|
||
"copy": "Copier",
|
||
"ttsListen": "Écouter",
|
||
"ttsStop": "Arrêter",
|
||
"edit": "Modifier",
|
||
"regenerate": "Régénérer",
|
||
"noConversationsYet": "Aucune conversation pour l'instant"
|
||
,
|
||
"usernameOrEmailHint": "Entrez votre nom d'utilisateur ou e‑mail",
|
||
"passwordHint": "Entrez votre mot de passe",
|
||
"enterApiKey": "Entrez votre clé API",
|
||
"signingIn": "Connexion en cours...",
|
||
"advancedSettings": "Paramètres avancés",
|
||
"customHeaders": "En-têtes personnalisés",
|
||
"customHeadersDescription": "Ajoutez des en-têtes HTTP personnalisés pour l'authentification, les clés API ou des exigences spécifiques du serveur.",
|
||
"headerNameEmpty": "Le nom de l'en-tête ne peut pas être vide",
|
||
"headerNameTooLong": "Nom d'en-tête trop long (max 64 caractères)",
|
||
"headerNameInvalidChars": "Nom d'en-tête invalide. Utilisez uniquement des lettres, des chiffres et ces symboles : !#$&-^_`|~",
|
||
"headerNameReserved": "Impossible d'écraser l'en-tête réservé « {key} »",
|
||
"@headerNameReserved": {"placeholders": {"key": {"type": "String"}}},
|
||
"headerValueEmpty": "La valeur de l'en-tête ne peut pas être vide",
|
||
"headerValueTooLong": "Valeur d'en-tête trop longue (max 1024 caractères)",
|
||
"headerValueInvalidChars": "La valeur de l'en-tête contient des caractères invalides. Utilisez uniquement des caractères ASCII imprimables.",
|
||
"headerValueUnsafe": "La valeur de l'en-tête semble contenir du contenu potentiellement dangereux",
|
||
"headerAlreadyExists": "L'en-tête « {key} » existe déjà. Supprimez-le d'abord pour le modifier.",
|
||
"@headerAlreadyExists": {"placeholders": {"key": {"type": "String"}}},
|
||
"maxHeadersReachedDetail": "Maximum 10 en-têtes personnalisés. Supprimez-en pour en ajouter."
|
||
,
|
||
"editMessage": "Modifier le message"
|
||
,
|
||
"noModelsAvailable": "Aucun modèle disponible",
|
||
"followingSystem": "Selon le système : {theme}",
|
||
"@followingSystem": {"placeholders": {"theme": {"type": "String"}}},
|
||
"themeDark": "Sombre",
|
||
"themeLight": "Clair",
|
||
"currentlyUsingDarkTheme": "Thème sombre actuellement utilisé",
|
||
"currentlyUsingLightTheme": "Thème clair actuellement utilisé",
|
||
"aboutConduit": "À propos de Conduit",
|
||
"versionLabel": "Version : {version} ({build})",
|
||
"@versionLabel": {"placeholders": {"version": {"type": "String"}, "build": {"type": "String"}}},
|
||
"githubRepository": "Dépôt GitHub",
|
||
"unableToLoadAppInfo": "Impossible de charger les informations de l'application",
|
||
"thinking": "Réflexion…",
|
||
"thoughts": "Réflexions",
|
||
"thoughtForDuration": "A réfléchi pendant {duration}",
|
||
"@thoughtForDuration": {
|
||
"description": "Indique la durée de réflexion de l'assistant.",
|
||
"placeholders": {"duration": {"type": "String", "example": "3 s"}}
|
||
}
|
||
,
|
||
"appCustomization": "Personnalisation de l'app",
|
||
"appCustomizationSubtitle": "Personnalisez l'affichage des noms et de l'UI",
|
||
"quickActionsDescription": "Choisissez jusqu'à deux raccourcis à épingler près du champ de saisie",
|
||
"display": "Affichage",
|
||
"realtime": "Temps réel",
|
||
"hideProviderInModelNames": "Masquer le fournisseur dans les noms de modèles",
|
||
"hideProviderInModelNamesDescription": "Afficher des noms comme \"gpt-4o\" au lieu de \"openai/gpt-4o\".",
|
||
"transportMode": "Mode de transport",
|
||
"transportModeDescription": "Choisissez comment l'app se connecte pour les mises à jour en temps réel.",
|
||
"mode": "Mode",
|
||
"transportModeAuto": "Auto (Polling + WebSocket)",
|
||
"transportModeWs": "WebSocket uniquement",
|
||
"transportModeAutoInfo": "Plus robuste sur les réseaux restrictifs. Passe à WebSocket lorsque possible.",
|
||
"transportModeWsInfo": "Moins de surcharge, mais peut échouer derrière des proxys/firewalls stricts."
|
||
}
|