feat(l10n): Update English localization with voice call states and model capabilities

This commit is contained in:
cogwheel0
2025-11-02 17:44:23 +05:30
parent b648ae29ea
commit 8321e3c721
23 changed files with 6242 additions and 1662 deletions

View File

@@ -1,7 +1,6 @@
{
"@@locale": "fr",
"appTitle": "Conduit",
"initializationFailed": "Échec de l'initialisation",
"retry": "Réessayer",
"back": "Retour",
"you": "Vous",
@@ -16,10 +15,6 @@
"@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",
"supportConduit": "Soutenir Conduit",
"supportConduitSubtitle": "Financez le développement continu et les nouvelles fonctionnalités.",
@@ -37,32 +32,14 @@
"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",
@@ -124,9 +101,7 @@
"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",
"onboardQuickBullet2": "Lancez Nouveau chat ou gérez les modèles depuis la barre",
"attachmentLabel": "Pièce jointe",
"tools": "Outils",
"voiceInput": "Entrée vocale",
@@ -157,19 +132,13 @@
"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",
"emptyImageData": "Données d'image vides",
"confirm": "Confirmer",
"cancel": "Annuler"
,
"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",
@@ -181,18 +150,9 @@
"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",
@@ -222,13 +182,17 @@
"deleteMessagesMessage": "Supprimer {count} messages ?",
"@deleteMessagesMessage": {
"placeholders": {
"count": {"type": "int"}
"count": {
"type": "int"
}
}
},
"routeNotFound": "Route introuvable : {routeName}",
"@routeNotFound": {
"placeholders": {
"routeName": {"type": "String"}
"routeName": {
"type": "String"
}
}
},
"deleteChatTitle": "Supprimer le chat",
@@ -254,8 +218,7 @@
"ttsStop": "Arrêter",
"edit": "Modifier",
"regenerate": "Régénérer",
"noConversationsYet": "Aucune conversation pour l'instant"
,
"noConversationsYet": "Aucune conversation pour l'instant",
"usernameOrEmailHint": "Entrez votre nom d'utilisateur ou email",
"passwordHint": "Entrez votre mot de passe",
"enterApiKey": "Entrez votre clé API",
@@ -275,31 +238,55 @@
"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"}}},
"@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"
,
"@headerAlreadyExists": {
"placeholders": {
"key": {
"type": "String"
}
}
},
"maxHeadersReachedDetail": "Maximum 10 en-têtes personnalisés. Supprimez-en pour en ajouter.",
"noModelsAvailable": "Aucun modèle disponible",
"followingSystem": "Selon le système : {theme}",
"@followingSystem": {"placeholders": {"theme": {"type": "String"}}},
"@followingSystem": {
"placeholders": {
"theme": {
"type": "String"
}
}
},
"themeDark": "Sombre",
"themePalette": "Palette de couleurs",
"@themePalette": {"description": "Titre pour choisir la palette de couleurs de l'application."},
"themePaletteDescription": "Choisissez les couleurs d'accent utilisées pour les boutons, les cartes et les bulles de discussion.",
"@themePaletteDescription": {"description": "Texte d'aide expliquant la sélection de la palette."},
"@themePalette": {
"description": "Titre pour choisir la palette de couleurs de l'application."
},
"themeLight": "Clair",
"currentlyUsingDarkTheme": "Thème sombre actuellement utilisé",
"currentlyUsingLightTheme": "Thème clair actuellement utilisé",
"aboutConduit": "À propos de Conduit",
"versionLabel": "Version : {version} ({build})",
"@versionLabel": {"placeholders": {"version": {"type": "String"}, "build": {"type": "String"}}},
"@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…",
@@ -307,9 +294,13 @@
"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"}}
}
,
"placeholders": {
"duration": {
"type": "String",
"example": "3 s"
}
}
},
"appCustomization": "Personnalisation",
"appCustomizationSubtitle": "Thème, langue, voix et quickpills",
"quickActionsDescription": "Raccourcis dans le chat",
@@ -332,12 +323,413 @@
"display": "Affichage",
"realtime": "Temps réel",
"transportMode": "Mode de transport",
"transportModeDescription": "Choisissez comment l'app se connecte pour les mises à jour en temps réel.",
"mode": "Mode",
"transportModePolling": "Polling de secours",
"transportModeWs": "WebSocket uniquement",
"transportModePollingInfo": "Bascule sur HTTP polling lorsque WebSocket est bloqué. Repasse à WebSocket dès que possible.",
"transportModeWsInfo": "Moins de surcharge, mais peut échouer derrière des proxys/firewalls stricts.",
"websocketConnectionError": "Impossible d'établir une connexion en temps réel. Veuillez vérifier votre réseau et la configuration du serveur.",
"websocketReconnectFailed": "Échec de la connexion en temps réel. Le streaming pourrait ne pas fonctionner correctement."
"quickActionsSelectedCount": "{count, plural, =0{Aucune action sélectionnée} one{{count} action sélectionnée} other{{count} actions sélectionnées}}",
"@quickActionsSelectedCount": {
"description": "Subtitle indicating how many quick actions are selected.",
"placeholders": {
"count": {
"type": "int",
"example": "2"
}
}
},
"autoSelectDescription": "Laissez l'application choisir le meilleur modèle",
"@autoSelectDescription": {
"description": "Explains what the auto-select model setting does."
},
"ttsEngineLabel": "Moteur",
"@ttsEngineLabel": {
"description": "Label for selecting the text-to-speech engine."
},
"ttsEngineDevice": "Sur l'appareil",
"@ttsEngineDevice": {
"description": "Chip label for using on-device text-to-speech."
},
"ttsEngineServer": "Serveur",
"@ttsEngineServer": {
"description": "Chip label for using server-side text-to-speech."
},
"modelCapabilityMultimodal": "Multimodal",
"@modelCapabilityMultimodal": {
"description": "Capability chip label for models that support multimodal input."
},
"modelCapabilityReasoning": "Raisonnement",
"@modelCapabilityReasoning": {
"description": "Capability chip label for models that support reasoning features."
},
"voiceCallTitle": "Appel vocal",
"@voiceCallTitle": {
"description": "Title displayed on the voice call screen."
},
"voiceCallPause": "Pause",
"@voiceCallPause": {
"description": "Button label to pause a voice call."
},
"voiceCallResume": "Reprendre",
"@voiceCallResume": {
"description": "Button label to resume a paused voice call."
},
"voiceCallStop": "Arrêter",
"@voiceCallStop": {
"description": "Button label to stop the active voice call."
},
"voiceCallEnd": "Terminer l'appel",
"@voiceCallEnd": {
"description": "Button label to end the voice call session."
},
"chooseDifferentFile": "Choisir un autre fichier",
"@chooseDifferentFile": {
"description": "Action label prompting the user to pick another file."
},
"errorWithMessage": "Erreur : {message}",
"@errorWithMessage": {
"description": "Error label with appended message text.",
"placeholders": {
"message": {
"type": "String",
"example": "Network timeout"
}
}
},
"networkTimeoutError": "La connexion a expiré. Vérifiez votre connexion Internet et réessayez.",
"@networkTimeoutError": {
"description": "User-facing message when a network request times out."
},
"networkUnreachableError": "Impossible d'atteindre le serveur. Vérifiez l'URL du serveur et votre connexion Internet.",
"@networkUnreachableError": {
"description": "User-facing message when the server cannot be reached."
},
"networkServerNotResponding": "Le serveur ne répond pas. Vérifiez qu'il est en cours d'exécution et accessible.",
"@networkServerNotResponding": {
"description": "User-facing message when the server does not respond to a request."
},
"networkGenericError": "Problème de connexion réseau. Vérifiez votre connexion Internet.",
"@networkGenericError": {
"description": "Fallback message for generic network errors."
},
"serverError500": "Le serveur rencontre des problèmes. Cela est généralement temporaire.",
"@serverError500": {
"description": "Message when a 500 error is encountered."
},
"serverErrorUnavailable": "Le serveur est temporairement indisponible. Réessayez dans un instant.",
"@serverErrorUnavailable": {
"description": "Message when a 502/503 error is encountered."
},
"serverErrorTimeout": "Le serveur a mis trop de temps à répondre. Réessayez.",
"@serverErrorTimeout": {
"description": "Message when the server times out."
},
"serverErrorGeneric": "Le serveur rencontre des difficultés. Réessayez plus tard.",
"@serverErrorGeneric": {
"description": "Fallback server error message."
},
"authSessionExpired": "Votre session a expiré. Veuillez vous reconnecter.",
"@authSessionExpired": {
"description": "Message when an authentication session expires."
},
"authForbidden": "Vous n'avez pas l'autorisation d'effectuer cette action.",
"@authForbidden": {
"description": "Message when the user lacks required permissions."
},
"authInvalidToken": "Le jeton d'authentification est invalide. Veuillez vous reconnecter.",
"@authInvalidToken": {
"description": "Message when the authentication token is invalid."
},
"authGenericError": "Problème d'authentification. Veuillez vous reconnecter.",
"@authGenericError": {
"description": "Fallback authentication error message."
},
"validationInvalidEmail": "Veuillez saisir une adresse e-mail valide.",
"@validationInvalidEmail": {
"description": "Validation message for invalid email input."
},
"validationWeakPassword": "Le mot de passe ne respecte pas les exigences. Vérifiez-le et réessayez.",
"@validationWeakPassword": {
"description": "Validation message for weak passwords."
},
"validationMissingRequired": "Veuillez remplir tous les champs obligatoires.",
"@validationMissingRequired": {
"description": "Validation message when required fields are missing."
},
"validationFormatError": "Certaines informations sont au mauvais format. Vérifiez-les et réessayez.",
"@validationFormatError": {
"description": "Validation message for generic formatting issues."
},
"validationGenericError": "Veuillez vérifier vos informations et réessayer.",
"@validationGenericError": {
"description": "Fallback validation message."
},
"fileNotFound": "Fichier introuvable. Il a peut-être été déplacé ou supprimé.",
"@fileNotFound": {
"description": "Message when a file cannot be located."
},
"fileAccessDenied": "Impossible d'accéder au fichier. Vérifiez les autorisations.",
"@fileAccessDenied": {
"description": "Message when file access is denied."
},
"fileTooLarge": "Le fichier est trop volumineux. Choisissez un fichier plus petit.",
"@fileTooLarge": {
"description": "Message when a file exceeds size limits."
},
"fileGenericError": "Problème avec le fichier. Essayez un autre fichier.",
"@fileGenericError": {
"description": "Fallback file error message."
},
"permissionCameraRequired": "L'autorisation de la caméra est nécessaire. Activez-la dans les paramètres.",
"@permissionCameraRequired": {
"description": "Message when camera permission is missing."
},
"permissionStorageRequired": "L'autorisation de stockage est nécessaire. Activez-la dans les paramètres.",
"@permissionStorageRequired": {
"description": "Message when storage permission is missing."
},
"permissionMicrophoneRequired": "L'autorisation du microphone est nécessaire. Activez-la dans les paramètres.",
"@permissionMicrophoneRequired": {
"description": "Message when microphone permission is missing."
},
"permissionGenericError": "Autorisation requise. Vérifiez les autorisations de l'application dans les paramètres.",
"@permissionGenericError": {
"description": "Fallback permission error message."
},
"actionRetryRequest": "Réessayez la requête.",
"@actionRetryRequest": {
"description": "Description for retrying a failed request."
},
"actionVerifyConnection": "Vérifiez votre connexion Internet.",
"@actionVerifyConnection": {
"description": "Description for checking internet connectivity."
},
"actionRetryOperation": "Réessayez l'opération.",
"@actionRetryOperation": {
"description": "Description for retrying the same operation."
},
"actionRetryAfterDelay": "Attendez un instant puis réessayez.",
"@actionRetryAfterDelay": {
"description": "Description suggesting a short delay before retrying."
},
"actionSignInToAccount": "Connectez-vous à votre compte.",
"@actionSignInToAccount": {
"description": "Description for signing back into the app."
},
"actionSelectAnotherFile": "Sélectionnez un autre fichier.",
"@actionSelectAnotherFile": {
"description": "Description for choosing a different file."
},
"actionOpenAppSettings": "Ouvrez les paramètres de l'application pour accorder les autorisations.",
"@actionOpenAppSettings": {
"description": "Description for opening system or app settings."
},
"actionRetryAfterPermission": "Réessayez après avoir accordé l'autorisation.",
"@actionRetryAfterPermission": {
"description": "Description for retrying once permissions are granted."
},
"actionReturnToPrevious": "Revenir à l'écran précédent.",
"@actionReturnToPrevious": {
"description": "Description for navigating back to the prior screen."
},
"continueAction": "Continuer",
"@continueAction": {
"description": "Button label to continue an action or flow."
},
"loadingShort": "Chargement",
"@loadingShort": {
"description": "Short loading label used for accessibility."
},
"loadingAnnouncement": "Chargement : {message}",
"@loadingAnnouncement": {
"description": "Screen reader announcement when loading a resource.",
"placeholders": {
"message": {
"type": "String",
"example": "Messages"
}
}
},
"errorAnnouncement": "Erreur : {error}",
"@errorAnnouncement": {
"description": "Screen reader announcement for an error.",
"placeholders": {
"error": {
"type": "String",
"example": "Network timeout"
}
}
},
"errorAnnouncementWithSuggestion": "Erreur : {error}. {suggestion}",
"@errorAnnouncementWithSuggestion": {
"description": "Screen reader announcement for an error with a follow-up suggestion.",
"placeholders": {
"error": {
"type": "String",
"example": "Network timeout"
},
"suggestion": {
"type": "String",
"example": "Please try again later."
}
}
},
"successAnnouncement": "Succès : {message}",
"@successAnnouncement": {
"description": "Screen reader announcement for successful actions.",
"placeholders": {
"message": {
"type": "String",
"example": "Profile updated"
}
}
},
"requiredFieldLabel": "{label} *",
"@requiredFieldLabel": {
"description": "Label text indicating a required field.",
"placeholders": {
"label": {
"type": "String",
"example": "Email"
}
}
},
"requiredFieldHelper": "Champ obligatoire",
"@requiredFieldHelper": {
"description": "Helper text indicating that the field is required."
},
"switchOnLabel": "Activé",
"@switchOnLabel": {
"description": "Semantic label when a switch is enabled."
},
"switchOffLabel": "Désactivé",
"@switchOffLabel": {
"description": "Semantic label when a switch is disabled."
},
"dialogSemanticLabel": "Dialogue : {title}",
"@dialogSemanticLabel": {
"description": "Semantic label describing the dialog title.",
"placeholders": {
"title": {
"type": "String",
"example": "Settings"
}
}
},
"previousLabel": "Précédent",
"@previousLabel": {
"description": "Label for navigating to the previous item."
},
"nextLabel": "Suivant",
"@nextLabel": {
"description": "Label for navigating to the next item."
},
"themePaletteConduitLabel": "Conduit",
"@themePaletteConduitLabel": {
"description": "Palette name for the default Conduit theme."
},
"themePaletteConduitDescription": "Thème neutre et épuré conçu pour Conduit.",
"@themePaletteConduitDescription": {
"description": "Description of the Conduit palette."
},
"themePaletteClaudeLabel": "Claude",
"@themePaletteClaudeLabel": {
"description": "Palette name inspired by the Claude web client."
},
"themePaletteClaudeDescription": "Palette chaleureuse inspirée du client web de Claude.",
"@themePaletteClaudeDescription": {
"description": "Description of the Claude palette."
},
"themePaletteT3ChatLabel": "T3 Chat",
"@themePaletteT3ChatLabel": {
"description": "Palette name inspired by the T3 Stack brand."
},
"themePaletteT3ChatDescription": "Dégradés ludiques inspirés de la marque T3 Stack.",
"@themePaletteT3ChatDescription": {
"description": "Description of the T3 Chat palette."
},
"themePaletteCatppuccinLabel": "Catppuccin",
"@themePaletteCatppuccinLabel": {
"description": "Palette name for Catppuccin colors."
},
"themePaletteCatppuccinDescription": "Palette douce de tons pastel.",
"@themePaletteCatppuccinDescription": {
"description": "Description of the Catppuccin palette."
},
"themePaletteTangerineLabel": "Tangerine",
"@themePaletteTangerineLabel": {
"description": "Palette name for Tangerine colors."
},
"themePaletteTangerineDescription": "Palette chaleureuse d'oranges et d'ardoises.",
"@themePaletteTangerineDescription": {
"description": "Description of the Tangerine palette."
},
"@onboardStartTitle": {
"description": "Onboarding card: start chatting title.",
"placeholders": {
"username": {
"type": "String",
"example": "Alex"
}
}
},
"@notAnImageFile": {
"description": "Error when a referenced file is not an image.",
"placeholders": {
"fileName": {
"type": "String",
"example": "image.txt"
}
}
},
"@failedToLoadImage": {
"description": "Error including the underlying reason when image loading fails.",
"placeholders": {
"error": {
"type": "String",
"example": "Network error"
}
}
},
"@ttsVoicesForLanguage": {
"description": "Section header for voices matching the app language",
"placeholders": {
"language": {
"type": "String",
"example": "EN"
}
}
},
"voiceCallReady": "Prêt",
"@voiceCallReady": {
"description": "Status label shown when the voice call is ready to start."
},
"voiceCallConnecting": "Connexion…",
"@voiceCallConnecting": {
"description": "Status label shown while the voice call is connecting."
},
"voiceCallListening": "Écoute",
"@voiceCallListening": {
"description": "Status label shown while the call is listening for input."
},
"voiceCallPaused": "En pause",
"@voiceCallPaused": {
"description": "Status label shown when the call is paused."
},
"voiceCallProcessing": "Réflexion…",
"@voiceCallProcessing": {
"description": "Status label shown while the call processes a response."
},
"voiceCallSpeaking": "Parle",
"@voiceCallSpeaking": {
"description": "Status label shown while the assistant is speaking."
},
"voiceCallDisconnected": "Déconnecté",
"@voiceCallDisconnected": {
"description": "Status label shown when the voice call has ended or disconnected."
},
"voiceCallErrorHelp": "Veuillez vérifier :\n• Les autorisations du microphone sont accordées\n• La reconnaissance vocale est disponible sur votre appareil\n• Vous êtes connecté au serveur",
"@voiceCallErrorHelp": {
"description": "Guidance shown when the voice call encounters an error."
}
}