feat(ui): overhaul default channel editor with full param override visual editor

- Port classic ParamOverrideEditorModal to default as standalone dialog (~3200 lines)
  with two-panel layout, drag-to-reorder, 23 operation modes, template library,
  visual/JSON dual mode, conditions management, and legacy format support
- Redesign channel drawer layout with clear visual hierarchy (CardHeading vs SubHeading)
  and bordered sub-modules for Field Passthrough and Upstream Model Detection
- Replace header override JsonEditor with plain textarea matching classic behavior
- Add searchable channel type combobox with scroll fix
- Add 100+ i18n keys across all 6 locales (en, zh, fr, ja, ru, vi)
This commit is contained in:
CaIon
2026-04-29 18:09:11 +08:00
parent 3b592895c6
commit b44faec66b
15 changed files with 5658 additions and 892 deletions
+194 -8
View File
@@ -10,6 +10,7 @@
". This action cannot be undone.": ". Cette action ne peut pas être annulée.",
"...": "...",
"\"default\": \"us-central1\", \"claude-3-5-sonnet-20240620\": \"europe-west1\"": "\"default\": \"us-central1\", \"claude-3-5-sonnet-20240620\": \"europe-west1\"",
"({{total}} total, {{omit}} omitted)": "({{total}} au total, {{omit}} omis)",
"(Leave empty to dissolve tag)": "(Laisser vide pour dissoudre le tag)",
"(Optional: redirect model names)": "(Facultatif : rediriger les noms de modèles)",
"(Override all channels' groups)": "(Remplacer les groupes de tous les canaux)",
@@ -122,6 +123,7 @@
"Add auto group": "Ajouter un groupe automatique",
"Add chat preset": "Ajouter un préréglage de chat",
"Add condition": "Ajouter une condition",
"Add Condition": "Ajouter une condition",
"Add custom model(s), comma-separated": "Ajouter un ou plusieurs modèles personnalisés, séparés par des virgules",
"Add discount tier": "Ajouter un niveau de réduction",
"Add each model or tag you want to include.": "Ajoutez chaque modèle ou étiquette que vous souhaitez inclure.",
@@ -164,12 +166,14 @@
"Added {{count}} custom model(s)": "{{count}} modèle(s) personnalisé(s) ajouté(s)",
"Added {{count}} model(s)": "{{count}} modèle(s) ajouté(s)",
"Added successfully": "Ajouté avec succès",
"Additional Conditions": "Conditions supplémentaires",
"Additional information": "Informations supplémentaires",
"Additional Information": "Informations supplémentaires",
"Additional Limit": "Limite supplémentaire",
"Additional Limits": "Limites supplémentaires",
"Additional metered capability": "Fonctionnalité supplémentaire facturée à lusage",
"Adjust Quota": "Ajuster le quota",
"Adjust response formatting, prompt behavior, proxy, and upstream automation.": "Ajustez le formatage des réponses, le comportement des prompts, le proxy et lautomatisation amont.",
"Adjust the appearance and layout to suit your preferences.": "Ajustez l'apparence et la mise en page selon vos préférences.",
"Admin": "Administrateur",
"Admin access required": "Accès administrateur requis",
@@ -185,6 +189,7 @@
"Advanced Options": "Options avancées",
"Advanced platform configuration.": "Configuration avancée de la plateforme.",
"Advanced Settings": "Paramètres avancés",
"Advanced text editing": "Édition de texte avancée",
"After clicking the button, you'll be asked to authorize the bot": "Après avoir cliqué sur le bouton, il vous sera demandé d'autoriser le bot",
"After disabling, it will no longer be shown to users, but historical orders are not affected. Continue?": "Après désactivation, il ne sera plus affiché aux utilisateurs, mais les commandes historiques ne sont pas affectées. Continuer ?",
"After enabling, the plan will be shown to users. Continue?": "Après activation, le plan sera affiché aux utilisateurs. Continuer ?",
@@ -209,6 +214,7 @@
"All Groups": "Tous les groupes",
"All Models": "Tous les modèles",
"All models in use are properly configured.": "Tous les modèles utilisés sont correctement configurés.",
"All Must Match (AND)": "Toutes doivent correspondre (AND)",
"All Status": "Tous les statuts",
"All Sync Status": "Tous les statuts de synchronisation",
"All Tags": "Tous les tags",
@@ -229,6 +235,7 @@
"Allow Private IPs": "Autoriser les IP privées",
"Allow registration with password": "Autoriser l'inscription avec mot de passe",
"Allow requests to private IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)": "Autoriser les requêtes vers les plages d'adresses IP privées (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)",
"Allow Retry": "Autoriser la relance",
"Allow safety_identifier passthrough": "Autoriser la transmission de safety_identifier",
"Allow service_tier passthrough": "Autoriser la transmission de service_tier",
"Allow speed passthrough": "Autoriser la transmission de speed",
@@ -271,6 +278,8 @@
"Announcements saved successfully": "Annonces enregistrées avec succès",
"Answer": "Réponse",
"Anthropic": "Anthropic",
"Any Match (OR)": "N'importe laquelle (OR)",
"API Access": "Accès API",
"API Addresses": "Adresses API",
"API Base URL (Important: Not Chat API) *": "URL de base de l'API (Important : Pas l'API de Chat) *",
"API Base URL *": "URL de base de l'API *",
@@ -305,8 +314,11 @@
"API2GPT": "API2GPT",
"Append": "Ajouter à la fin",
"Append mode: New keys will be added to the end of the existing key list": "Mode d'ajout : Les nouvelles clés seront ajoutées à la fin de la liste de clés existante",
"Append Template": "Ajouter le modèle",
"Append to channel": "Ajouter au canal",
"Append to End": "Ajouter à la fin",
"Append to existing keys": "Ajouter aux clés existantes",
"Append value to array / string / object end": "Ajouter la valeur à la fin du tableau / chaîne / objet",
"appended": "ajouté",
"Application": "Application",
"Applies to custom completion endpoints. JSON map of model → ratio.": "S'applique aux points de terminaison de complétion personnalisés. Mappage JSON de modèle → ratio.",
@@ -329,9 +341,9 @@
"Are you sure you want to unbind {{provider}} for this user? The user will no longer be able to log in via this method.": "Êtes-vous sûr de vouloir dissocier {{provider}} de cet utilisateur ? L'utilisateur ne pourra plus se connecter via cette méthode.",
"Are you sure you want to unbind {{provider}}? You will no longer be able to log in via this method.": "Êtes-vous sûr de vouloir dissocier {{provider}} ? Vous ne pourrez plus vous connecter via cette méthode.",
"Are you sure?": "Êtes-vous sûr ?",
"Area Chart": "Graphique en aires",
"Args (space separated)": "Arguments (séparés par des espaces)",
"Array of chat client presets. Each item is an object with one key-value pair: client name and its URL.": "Tableau de préréglages de clients de chat. Chaque élément est un objet avec une paire clé-valeur : nom du client et son URL.",
"Area Chart": "Graphique en aires",
"Asc": "Asc",
"Ask anything": "Demandez n'importe quoi",
"Async task refund": "Remboursement de tâche asynchrone",
@@ -370,6 +382,7 @@
"Auto-disable status codes": "Codes de statut de désactivation auto",
"Auto-discover": "Découverte automatique",
"Auto-discovers endpoints from the provider": "Découvre automatiquement les points de terminaison du fournisseur",
"Auto-fill when one field exists and another is missing": "Remplissage automatique si un champ existe et l'autre est manquant",
"Auto-retry status codes": "Codes de statut de nouvelle tentative auto",
"Automatically disable channel on repeated failures": "Désactiver automatiquement le canal en cas d'échecs répétés",
"Automatically disable channels exceeding this response time": "Désactiver automatiquement les canaux dépassant ce temps de réponse",
@@ -386,6 +399,7 @@
"Average RPM": "RPM moyen",
"Average TPM": "TPM moyen",
"AWS": "AWS",
"AWS Bedrock Claude Compat": "AWS Bedrock Claude Compat",
"AWS Key Format": "Format de clé AWS",
"Azure": "Azure",
"AZURE_OPENAI_ENDPOINT *": "AZURE_OPENAI_ENDPOINT *",
@@ -399,6 +413,7 @@
"Backup code must be in format XXXX-XXXX": "Le code de sauvegarde doit être au format XXXX-XXXX",
"Backup codes regenerated successfully": "Codes de sauvegarde régénérés avec succès",
"Backup codes remaining: {{count}}": "Codes de secours restants : {{count}}",
"Bad Request": "Requête invalide",
"Badge Color": "Couleur du badge",
"Baidu": "Baidu",
"Baidu V2": "Baidu V2",
@@ -420,6 +435,7 @@
"Basic Configuration": "Configuration de base",
"Basic Info": "Informations de base",
"Basic Information": "Informations de base",
"Basic Templates": "Modèles de base",
"Batch Add (one key per line)": "Ajout par lots (une clé par ligne)",
"Batch delete failed": "Échec de la suppression par lots",
"Batch detection complete: {{channels}} channels, {{add}} to add, {{remove}} to remove, {{fails}} failed": "Détection par lots terminée : {{channels}} canaux, {{add}} à ajouter, {{remove}} à supprimer, {{fails}} échoués",
@@ -533,6 +549,7 @@
"Channel enabled successfully": "Canal activé avec succès",
"Channel Extra Settings": "Paramètres supplémentaires du canal",
"Channel ID": "ID du Canal",
"Channel key": "Clé du canal",
"Channel key unlocked": "Clé de canal déverrouillée",
"Channel models": "Modèles de canaux",
"Channel name is required": "Le nom du canal est requis",
@@ -585,6 +602,7 @@
"Choose where to fetch upstream metadata.": "Choisissez où récupérer les métadonnées amont.",
"Classic (Legacy Frontend)": "Classique (Ancien frontend)",
"Claude": "Claude",
"Claude CLI Header Passthrough": "Passthrough en-tête Claude CLI",
"Clean history logs": "Nettoyer les journaux d'historique",
"Clean logs": "Nettoyer les logs",
"Clean up inactive cache": "Nettoyer le cache inactif",
@@ -621,6 +639,7 @@
"Click to view full details": "Cliquez pour voir les détails complets",
"Click to view full error message": "Cliquez pour voir le message d'erreur complet",
"Click to view full prompt": "Cliquez pour voir l'invite complète",
"Client header value": "Valeur d'en-tête client",
"Client ID": "ID client",
"Client Secret": "Secret client",
"Close": "Fermer",
@@ -636,12 +655,15 @@
"Codex Account & Usage": "Compte et utilisation Codex",
"Codex Authorization": "Autorisation Codex",
"Codex channels use an OAuth JSON credential as the key.": "Les canaux Codex utilisent un identifiant OAuth JSON comme clé.",
"Codex CLI Header Passthrough": "Passthrough en-tête Codex CLI",
"Cohere": "Cohere",
"Collapse": "Réduire",
"Collapse All": "Tout réduire",
"Color": "Couleur",
"Color is required": "La couleur est requise",
"Color:": "Couleur :",
"Coming Soon!": "Bientôt disponible !",
"Comma-separated exact model names. Prefix with regex: to ignore by regular expression.": "Noms exacts de modèles séparés par des virgules. Préfixez avec regex: pour ignorer par expression régulière.",
"Comma-separated list of allowed ports (empty = all ports)": "Liste des ports autorisés séparés par des virgules (vide = tous les ports)",
"Comma-separated model names (leave empty to keep current)": "Noms de modèles séparés par des virgules (laissez vide pour conserver l'actuel)",
"Comma-separated model names, e.g., gpt-4,gpt-3.5-turbo": "Noms de modèles séparés par des virgules, p. ex., gpt-4,gpt-3.5-turbo",
@@ -659,7 +681,11 @@
"Completion price ($/1M tokens)": "Prix de la complétion (USD/1M jetons)",
"Completion ratio": "Ratio de complétion",
"Concatenate channel system prompt with user's prompt": "Concaténer l'invite système du canal avec l'invite de l'utilisateur",
"Condition Path": "Chemin de condition",
"Condition Settings": "Paramètres de condition",
"Condition Value": "Valeur de condition",
"Conditional multipliers": "Multiplicateurs conditionnels",
"Conditions": "Conditions",
"Conditions (AND)": "Conditions (ET)",
"Confidence": "Confiance",
"Configuration": "Configuration",
@@ -768,16 +794,20 @@
"Control log retention and clean historical data.": "Contrôler la rétention des journaux et nettoyer les données historiques.",
"Control passthrough behavior and connection keep-alive settings": "Contrôler le comportement de passthrough et les paramètres de maintien de connexion",
"Control request frequency to prevent abuse and manage system load.": "Contrôler la fréquence des requêtes pour prévenir les abus et gérer la charge système.",
"Control which models are exposed and which groups may use them.": "Contrôlez les modèles exposés et les groupes autorisés à les utiliser.",
"Control which sidebar areas and modules are available to all users.": "Contrôler les zones et modules de la barre latérale disponibles pour tous les utilisateurs.",
"Controls whether user verification (biometrics/PIN) is required during Passkey flows.": "Contrôle si la vérification de l'utilisateur (biométrie/PIN) est requise lors des flux de Passkey.",
"Conversion rate from USD to your custom currency": "Taux de conversion de l'USD vers votre devise personnalisée",
"Convert reasoning_content to <think> tag in content": "Convertir reasoning_content en balise <think> dans content",
"Convert string to lowercase": "Convertir la chaîne en minuscules",
"Convert string to uppercase": "Convertir la chaîne en majuscules",
"Copied": "Copié",
"Copied {{count}} key(s)": "{{count}} clé(s) copiée(s)",
"Copied to clipboard": "Copié dans le presse-papiers",
"Copied: {{model}}": "Copié : {{model}}",
"Copied!": "Copié !",
"Copy": "Copier",
"Copy a request header": "Copier un en-tête de requête",
"Copy All": "Tout copier",
"Copy all backup codes": "Copier tous les codes de sauvegarde",
"Copy All Codes": "Copier tous les codes",
@@ -787,6 +817,7 @@
"Copy code": "Copier le code",
"Copy Connection Info": "Copier les infos de connexion",
"Copy failed": "Copie échouée",
"Copy Field": "Copier le champ",
"Copy Header": "Copier l'en-tête",
"Copy Key": "Copier la clé",
"Copy Link": "Copier le lien",
@@ -795,14 +826,17 @@
"Copy prompt": "Copier le prompt",
"Copy redemption code": "Copier le code de rachat",
"Copy referral link": "Copier le lien de parrainage",
"Copy Request Header": "Copier un en-tête de requête",
"Copy secret key": "Copier la clé secrète",
"Copy selected codes": "Copier les codes sélectionnés",
"Copy selected keys": "Copier les clés sélectionnées",
"Copy source field to target field": "Copier le champ source vers le champ cible",
"Copy the key and paste it here": "Copiez la clé et collez-la ici",
"Copy this prompt and send it to an LLM (e.g. ChatGPT / Claude) to help design your billing expression.": "Copiez ce prompt et envoyez-le à un LLM (ex. ChatGPT / Claude) pour vous aider à concevoir votre expression de facturation.",
"Copy to clipboard": "Copier dans le presse-papiers",
"Copy token": "Copier le Jeton",
"Copy URL": "Copier l'URL",
"Core Configuration": "Configuration principale",
"Core Features": "Fonctionnalités principales",
"Cost": "Coût",
"Cost in USD per request, regardless of tokens used.": "Coût en USD par requête, quel que soit le nombre de jetons utilisés.",
@@ -834,6 +868,8 @@
"Create Prefill Group": "Créer un groupe de préremplissage",
"Create Provider": "Créer un fournisseur",
"Create Redemption Code": "Créer un code d'échange",
"Create request parameter override rules with a visual editor or raw JSON.": "Créer des règles de substitution de paramètres avec l'éditeur visuel ou le JSON brut.",
"Create request parameter override rules without editing raw JSON.": "Créez des règles de remplacement des paramètres de requête sans modifier le JSON brut.",
"Create reusable bundles of models, tags, endpoints, and user groups to speed up configuration elsewhere in the console.": "Créez des ensembles réutilisables de modèles, de balises, de points de terminaison et de groupes d'utilisateurs pour accélérer la configuration ailleurs dans la console.",
"Create succeeded": "Création réussie",
"Create Vendor": "Créer un fournisseur",
@@ -858,6 +894,8 @@
"Current Cache Size": "Taille actuelle du cache",
"Current email: {{email}}. Enter a new email to change.": "E-mail actuel : {{email}}. Saisissez un nouvel e-mail pour le modifier.",
"Current key": "Clé actuelle",
"Current legacy JSON is invalid, cannot append": "Le JSON ancien format actuel n'est pas valide, impossible d'ajouter",
"Current Level Only": "Niveau actuel uniquement",
"Current models for the longest channel in this tag. May not include all models from all channels.": "Modèles actuels pour le canal le plus long de cette balise. Peut ne pas inclure tous les modèles de tous les canaux.",
"Current Password": "Mot de passe actuel",
"Current Price": "Prix actuel",
@@ -874,6 +912,7 @@
"Custom Currency Symbol": "Symbole de devise personnalisé",
"Custom currency symbol is required": "Le symbole de devise personnalisé est requis",
"Custom database driver detected.": "Pilote de base de données personnalisé détecté.",
"Custom Error Response": "Réponse d'erreur personnalisée",
"Custom Home Page": "Page d'accueil personnalisée",
"Custom message shown when access is denied": "Message personnalisé affiché lorsque l'accès est refusé",
"Custom model (comma-separated)": "Modèle personnalisé (séparé par des virgules)",
@@ -923,13 +962,17 @@
"Delete": "Supprimer",
"Delete (": "Supprimer (",
"Delete {{count}} API key(s)?": "Supprimer {{count}} clé(s) API ?",
"Delete a runtime request header": "Supprimer un en-tête de requête à l'exécution",
"Delete Account": "Supprimer le compte",
"Delete All Disabled": "Supprimer tout ce qui est désactivé",
"Delete All Disabled Channels?": "Supprimer tous les canaux désactivés ?",
"Delete Auto-Disabled": "Supprimer les désactivés automatiquement",
"Delete Channel": "Supprimer le canal",
"Delete Channels?": "Supprimer les canaux ?",
"Delete condition": "Supprimer la condition",
"Delete Condition": "Supprimer la condition",
"Delete failed": "Échec de la suppression",
"Delete Field": "Supprimer le champ",
"Delete group": "Supprimer le groupe",
"Delete Header": "Supprimer l'en-tête",
"Delete Invalid": "Supprimer les invalides",
@@ -941,6 +984,7 @@
"Delete Model": "Supprimer le modèle",
"Delete Models?": "Supprimer les modèles ?",
"Delete Provider": "Supprimer le fournisseur",
"Delete Request Header": "Supprimer un en-tête de requête",
"Delete selected API keys": "Supprimer les clés API sélectionnées",
"Delete selected channels": "Supprimer les canaux sélectionnés",
"Delete selected models": "Supprimer les modèles sélectionnés",
@@ -1033,6 +1077,8 @@
"Displays the mobile sidebar.": "Affiche la barre latérale mobile.",
"Do not over-trust this feature. IP may be spoofed. Please use with nginx, CDN and other gateways.": "Ne faites pas trop confiance à cette fonctionnalité. L'IP peut être usurpée. Veuillez l'utiliser avec nginx, CDN et autres passerelles.",
"Do not repeat check-in; only once per day": "Ne répétez pas le check-in ; une seule fois par jour",
"Do regex replacement in the target field": "Effectuer un remplacement par expression régulière dans le champ cible",
"Do string replacement in the target field": "Effectuer un remplacement de chaîne dans le champ cible",
"Docs": "Documents",
"Documentation Link": "Lien de la documentation",
"Documentation or external knowledge base.": "Documentation ou base de connaissances externe.",
@@ -1062,6 +1108,7 @@
"e.g. 401, 403, 429, 500-599": "ex. 401, 403, 429, 500-599",
"e.g. 8 means 1 USD = 8 units": "par ex. 8 signifie 1 USD = 8 unités",
"e.g. Basic Plan": "ex. Plan de base",
"e.g. Clean tool parameters to avoid upstream validation errors": "ex. Nettoyer les paramètres d'outils pour éviter les erreurs de validation en amont",
"e.g. example.com": "par ex. example.com",
"e.g. llama3.1:8b": "p. ex. llama3.1:8b",
"e.g. My GitLab": "par ex. Mon GitLab",
@@ -1069,6 +1116,7 @@
"e.g. New API Console": "par ex. console New API",
"e.g. openid profile email": "par ex. openid profile email",
"e.g. Suitable for light usage": "ex. Adapté à une utilisation légère",
"e.g. This request does not meet access policy": "ex. Cette requête ne satisfait pas la politique d'accès",
"e.g., 0.95": "par ex., 0.95",
"e.g., 100": "par ex., 100",
"e.g., 123456": "par ex., 123456",
@@ -1084,6 +1132,7 @@
"e.g., d6b5da8hk1awo8nap34ube6gh": "par ex., d6b5da8hk1awo8nap34ube6gh",
"e.g., default, vip, premium": "par ex., par défaut, vip, premium",
"e.g., gpt-4, claude-3": "ex. gpt-4, claude-3",
"e.g., gpt-4.1-nano,regex:^claude-.*$,regex:^sora-.*$": "ex. : gpt-4.1-nano,regex:^claude-.*$,regex:^sora-.*$",
"e.g., https://api.example.com (path before /suno)": "par ex., https://api.example.com (chemin avant /suno)",
"e.g., https://api.openai.com/v1/chat/completions": "par ex., https://api.openai.com/v1/chat/completions",
"e.g., https://ark.cn-beijing.volces.com": "p. ex., https://ark.cn-beijing.volces.com",
@@ -1111,6 +1160,8 @@
"Edit discount tier": "Modifier le palier de remise",
"Edit FAQ": "Modifier la FAQ",
"Edit group rate limit": "Modifier la limite de taux de groupe",
"Edit JSON object directly. Suitable for simple parameter overrides.": "Modifier l'objet JSON directement. Adapté aux substitutions de paramètres simples.",
"Edit JSON text directly. Format will be validated on save.": "Modifier le texte JSON directement. Le format sera validé à l'enregistrement.",
"Edit model": "Modifier le modèle",
"Edit Model": "Modifier le modèle",
"Edit OAuth Provider": "Modifier le fournisseur OAuth",
@@ -1193,8 +1244,10 @@
"Endpoint:": "Point de terminaison :",
"Endpoints": "Points de terminaison",
"English": "Anglais",
"Ensure Prefix": "Assurer le préfixe",
"Ensure Suffix": "Assurer le suffixe",
"Ensure Prefix": "Garantir le préfixe",
"Ensure Suffix": "Garantir le suffixe",
"Ensure the string has a specified prefix": "S'assurer que la chaîne a un préfixe spécifié",
"Ensure the string has a specified suffix": "S'assurer que la chaîne a un suffixe spécifié",
"Enter 6-digit code": "Saisir le code à 6 chiffres",
"Enter a name": "Saisir un nom",
"Enter a new name": "Entrez un nouveau nom",
@@ -1220,6 +1273,7 @@
"Enter display name": "Saisir le nom d'affichage",
"Enter HTML code (e.g., <p>About us...</p>) or a URL (e.g., https://example.com) to embed as iframe": "Saisissez le code HTML (par exemple, <p>À propos de nous...</p>) ou une URL (par exemple, https://example.com) à intégrer en tant qu'iframe",
"Enter Input price to calculate ratio": "Saisir le prix Input pour calculer le ratio",
"Enter JSON to override request headers": "Entrez du JSON pour remplacer les en-têtes",
"Enter key, format: AccessKey|SecretAccessKey|Region": "Entrez la clé, format : AccessKey|SecretAccessKey|Region",
"Enter key, one per line, format: AccessKey|SecretAccessKey|Region": "Entrez la clé, une par ligne, format : AccessKey|SecretAccessKey|Region",
"Enter model name": "Entrez le nom du modèle",
@@ -1271,8 +1325,12 @@
"Epay Gateway": "Passerelle Epay",
"Epay merchant ID": "ID marchand Epay",
"Epay secret key": "Clé secrète Epay",
"Equals": "Égal à",
"Error": "Erreur",
"Error Code (optional)": "Code d'erreur (optionnel)",
"Error Message": "Message d'erreur",
"Error Message (required)": "Message d'erreur (requis)",
"Error Type (optional)": "Type d'erreur (optionnel)",
"Estimated cost": "Coût estimé",
"Estimated quota cost": "Coût de quota estimé",
"Exact": "Exact",
@@ -1290,6 +1348,7 @@
"Existing account will be reused": "Le compte existant sera réutilisé",
"Existing Models ({{count}})": "Modèles existants ({{count}})",
"Exists": "Existe",
"Expand All": "Tout développer",
"Expected a JSON array.": "Un tableau JSON est attendu.",
"Experiment with prompts and models in real time.": "Expérimentez avec des prompts et des modèles en temps réel.",
"Expiration Time": "Heure d'expiration",
@@ -1456,6 +1515,7 @@
"field": "champ",
"Field Mapping": "Mappage de champs",
"Field passthrough controls": "Contrôles de transmission des champs",
"Field Path": "Chemin du champ",
"File Search": "Recherche de fichiers",
"Files to Retain": "Fichiers à conserver",
"Fill All Models": "Remplir tous les modèles",
@@ -1551,6 +1611,7 @@
"GC executed": "GC exécuté",
"GC execution failed": "Échec de l'exécution du GC",
"Gemini": "Gemini",
"Gemini Image 4K": "Gemini Image 4K",
"Gemini will continue to auto-detect thinking mode even with the adapter disabled. Enable this only when you need finer control over pricing and budgeting.": "Gemini continuera à détecter automatiquement le mode de pensée même avec l'adaptateur désactivé. Activez ceci uniquement lorsque vous avez besoin d'un contrôle plus fin sur la tarification et le budget.",
"General": "Général",
"General Settings": "Paramètres généraux",
@@ -1592,6 +1653,8 @@
"gpt-4": "gpt-4",
"gpt-4, claude-3-opus, etc.": "gpt-4, claude-3-opus, etc.",
"GPU count": "Nombre de GPU",
"Greater Than": "Supérieur à",
"Greater Than or Equal": "Supérieur ou égal",
"Grok": "Grok",
"Grok Settings": "Paramètres Grok",
"Group": "Groupe",
@@ -1629,8 +1692,11 @@
"Has been invalidated": "Invalidé avec succès",
"Have a Code?": "Vous avez un code ?",
"Header": "En-tête",
"Header Name": "Nom de len-tête",
"Header navigation": "Navigation d'en-tête",
"Header Override": "Remplacement d'en-tête",
"Header Passthrough (X-Request-Id)": "Passthrough en-tête (X-Request-Id)",
"Header Value (supports string or JSON mapping)": "Valeur de l'en-tête (chaîne ou mappage JSON)",
"Hidden — verify to reveal": "Masqué — vérifiez pour révéler",
"Hide": "Masquer",
"Hide API key": "Masquer la clé API",
@@ -1697,6 +1763,7 @@
"If authorization succeeds, the generated JSON will be inserted into the key field. You still need to save the channel to persist it.": "Si l'autorisation réussit, le JSON généré sera inséré dans le champ clé. Vous devez encore enregistrer le canal pour le conserver.",
"If connecting to upstream One API or New API relay projects, use OpenAI type instead unless you know what you are doing": "Si vous vous connectez à des projets de relais One API ou New API en amont, utilisez le type OpenAI à la place sauf si vous savez ce que vous faites",
"If the affinity channel fails and retry succeeds on another channel, update affinity to the successful channel.": "Si le canal affinitaire échoue et qu'une nouvelle tentative réussit sur un autre canal, mettre à jour l'affinité vers le canal ayant réussi.",
"Ignored upstream models": "Modèles amont ignorés",
"Image": "Image",
"Image Generation": "Génération d'images",
"Image In": "Entrée dimage",
@@ -1730,6 +1797,7 @@
"Integrations": "Intégrations",
"Inter-group overrides": "Dérogations inter-groupes",
"Inter-group ratio overrides": "Dérogations de ratio inter-groupes",
"Internal Notes": "Notes internes",
"Internal notes (not shown to users)": "Notes internes (non visibles par les utilisateurs)",
"Internal Server Error!": "Erreur interne du serveur !",
"Invalid chat link. Please contact the administrator.": "Lien de chat invalide. Veuillez contacter l'administrateur.",
@@ -1750,6 +1818,7 @@
"Invalid status code mapping entries: {{entries}}": "Entrées de mappage de code d'état invalides : {{entries}}",
"Invalidate": "Invalider",
"Invalidated": "Invalidé",
"Invert match": "Inverser la correspondance",
"Invitation Code": "Code d'invitation",
"Invitation Quota": "Quota d'invitation",
"Invite Info": "Informations sur l'invitation",
@@ -1777,6 +1846,7 @@
"JSON": "JSON",
"JSON array of group identifiers. When enabled below, new tokens rotate through this list.": "Tableau JSON d'identifiants de groupe. Lorsqu'il est activé ci-dessous, les nouveaux jetons alternent dans cette liste.",
"JSON Editor": "Édition JSON",
"JSON format error": "Erreur de format JSON",
"JSON format supports service account JSON files": "Le format JSON prend en charge les fichiers JSON de compte de service",
"JSON map of group → description exposed when users create API keys.": "Carte JSON de groupe → description exposée lorsque les utilisateurs créent des clés API.",
"JSON map of group → ratio applied when the user selects the group explicitly.": "Carte JSON de groupe → ratio appliqué lorsque l'utilisateur sélectionne explicitement le groupe.",
@@ -1785,11 +1855,14 @@
"JSON Mode": "Mode JSON",
"JSON must be an object": "Le JSON doit être un objet",
"JSON object:": "Objet JSON :",
"JSON Text": "Texte JSON",
"JSON-based access control rules. Leave empty to allow all users.": "Règles de contrôle d'accès basées sur JSON. Laisser vide pour autoriser tous les utilisateurs.",
"Just now": "À l'instant",
"JustSong": "JustSong",
"K": "K",
"Keep enabled if you need to proxy requests for different upstream accounts.": "Gardez activé si vous devez proxifier les requêtes pour différents comptes en amont.",
"Keep original value": "Conserver la valeur originale",
"Keep original value (skip if target exists)": "Conserver la valeur originale (ignorer si la cible existe)",
"Keep this above 1 minute to avoid heavy database load": "Gardez cette valeur au-dessus de 1 minute pour éviter une charge excessive de la base de données",
"Keep-alive Ping": "Ping de maintien de connexion",
"Key": "Clé",
@@ -1797,9 +1870,12 @@
"Key Sources": "Sources de clé",
"Key Summary": "Résumé de clé",
"Key Update Mode": "Mode de mise à jour de la clé",
"Keys, OAuth credentials, and multi-key update behavior.": "Clés, identifiants OAuth et comportement de mise à jour multi-clés.",
"Kling": "Kling",
"Knowledge Base ID *": "ID de la base de connaissances *",
"Landing page with system overview.": "Page d'accueil avec aperçu du système.",
"Last check time": "Dernière vérification",
"Last detected addable models": "Derniers modèles ajoutables détectés",
"Last Login": "Dernière connexion",
"Last Seen": "Dernière fois",
"Last Tested": "Dernier testé",
@@ -1823,7 +1899,11 @@
"Leave empty to use default": "Laisser vide pour utiliser la valeur par défaut",
"Leave empty to use system temp directory": "Laisser vide pour utiliser le répertoire temporaire",
"Leave empty to use username": "Laissez vide pour utiliser le nom d'utilisateur",
"Legacy Format (JSON Object)": "Ancien format (objet JSON)",
"Legacy format must be a JSON object": "L'ancien format doit être un objet JSON",
"Less": "Moins",
"Less Than": "Inférieur à",
"Less Than or Equal": "Inférieur ou égal",
"Light": "Clair",
"Lightning Fast": "Extrêmement rapide",
"Limit period": "Période de limite",
@@ -1863,6 +1943,7 @@
"Log IP address for usage and error logs": "Enregistrer l'adresse IP pour les journaux d'utilisation et d'erreurs",
"Log Maintenance": "Maintenance des journaux",
"Log Type": "Type de journal",
"Logic": "Logique",
"Login failed": "Échec de la connexion",
"Logo": "Logo",
"Logo URL": "URL du logo",
@@ -1900,11 +1981,17 @@
"Map request model names to actual provider model names (JSON format)": "Mapper les noms de modèles de requête aux noms réels de modèles du fournisseur (format JSON)",
"Map response status codes (JSON format)": "Mapper les codes de statut de réponse (format JSON)",
"Map upstream status codes to different codes": "Mapper les codes de statut amont à différents codes",
"Match All (AND)": "Toutes (AND)",
"Match Any (OR)": "N'importe laquelle (OR)",
"Match Mode": "Mode de correspondance",
"Match model name exactly": "Correspondance exacte du nom du modèle",
"Match models containing this name": "Correspondance des modèles contenant ce nom",
"Match models ending with this name": "Correspondance des modèles se terminant par ce nom",
"Match models starting with this name": "Correspondance des modèles commençant par ce nom",
"Match Text": "Texte à rechercher",
"Match Type": "Type de correspondance",
"Match Value": "Valeur de correspondance",
"Match Value (optional)": "Valeur de correspondance (optionnel)",
"Matched": "Correspondant",
"Matched Tier": "Palier correspondant",
"Matching Rules": "Règles de correspondance",
@@ -2018,8 +2105,12 @@
"More templates...": "Autres modèles…",
"More...": "Plus...",
"Move": "Déplacer",
"Move a request header": "Déplacer un en-tête de requête",
"Move affiliate rewards to your main balance": "Transférer les récompenses d'affiliation vers votre solde principal",
"Move Field": "Déplacer le champ",
"Move Header": "Déplacer l'en-tête",
"Move Request Header": "Déplacer un en-tête de requête",
"Move source field to target field": "Déplacer le champ source vers le champ cible",
"ms": "ms",
"Multi-key channel: Keys will be": "Canal multi-clés : Les clés seront",
"Multi-Key Management": "Gestion multi-clés",
@@ -2054,6 +2145,8 @@
"Name must be between {{min}} and {{max}} characters": "Le nom doit contenir entre {{min}} et {{max}} caractères",
"Name Rule": "Règle de nommage",
"Name Suffix": "Suffixe du nom",
"Name the channel and choose the upstream provider.": "Nommez le canal et choisissez le fournisseur amont.",
"Name the channel, choose the provider, configure API access, and set credentials.": "Nommez le canal, choisissez le fournisseur, configurez laccès API et définissez les identifiants.",
"name@example.com": "name@example.com",
"Native format": "Format natif",
"Need a code?": "Besoin d'un code ?",
@@ -2065,7 +2158,7 @@
"New API": "New API",
"New API &lt;noreply@example.com&gt;": "New API &lt;noreply@example.com&gt;",
"New API Project Repository:": "Dépôt du projet New API :",
"New Format Template": "Nouveau modèle de format",
"New Format Template": "Modèle nouveau format",
"New Group": "Nouveau groupe",
"New Models ({{count}})": "Nouveaux modèles ({{count}})",
"New name will be:": "Le nouveau nom sera :",
@@ -2098,6 +2191,7 @@
"No changes made": "Aucune modification effectuée",
"No changes to save": "Aucune modification à enregistrer",
"No channel selected": "Aucun canal sélectionné",
"No channel type found.": "Aucun type de canal trouvé.",
"No channels available. Create your first channel to get started.": "Aucun canal disponible. Créez votre premier canal pour commencer.",
"No channels found": "Aucun canal trouvé",
"No Channels Found": "Aucun canal trouvé",
@@ -2133,6 +2227,7 @@
"No mappings configured. Click \"Add Row\" to get started.": "Aucun mappage configuré. Cliquez sur « Ajouter une ligne » pour commencer.",
"No matches found": "Aucune correspondance trouvée",
"No matching results": "Aucun résultat correspondant",
"No matching rules": "Aucune règle correspondante",
"No messages yet": "Pas encore de messages",
"No missing models found.": "Aucun modèle manquant trouvé.",
"No model found.": "Aucun modèle trouvé.",
@@ -2205,6 +2300,7 @@
"Not available": "Non disponible",
"Not backed up": "Non sauvegardé",
"Not bound": "Non lié",
"Not Equals": "Différent de",
"Not Set": "Non défini",
"Not set yet": "Non défini",
"Not Started": "Non démarré",
@@ -2225,6 +2321,7 @@
"OAuth failed": "Échec de l'OAuth",
"OAuth Integrations": "Intégrations OAuth",
"OAuth start failed": "Échec du démarrage OAuth",
"Object Prune Rules": "Règles de nettoyage d'objets",
"Observability": "Observabilité",
"Obtain the API key, merchant ID, and RSA key pair from the Waffo dashboard, and configure the callback URL.": "Obtenez la clé API, l'ID du commerçant et la paire de clés RSA depuis le tableau de bord Waffo, et configurez l'URL de rappel.",
"Obtain the merchant, store, product and signing keys from your Waffo dashboard. Webhook URL: <ServerAddress>/api/waffo-pancake/webhook": "Obtenez l'ID marchand, le magasin, le produit et les clés de signature dans le tableau de bord Waffo. URL du Webhook : <ServerAddress>/api/waffo-pancake/webhook",
@@ -2282,7 +2379,9 @@
"Opened authorization page": "Page d'autorisation ouverte",
"OpenRouter": "OpenRouter",
"opens in an external client. Trigger it from the sidebar or API key actions to launch the configured application.": "s'ouvre dans un client externe. Déclenchez-le depuis la barre latérale ou les actions de clé API pour lancer l'application configurée.",
"Operation": "Opération",
"Operation failed": "Opération échouée",
"Operation Type": "Type d'opération",
"Operator Admin": "Admin opérateur",
"Optimize system for self-hosted single-user usage": "Optimiser le système pour une utilisation auto-hébergée par un seul utilisateur",
"Optimized network architecture ensures millisecond response times": "Architecture réseau optimisée garantissant des temps de réponse en millisecondes",
@@ -2294,6 +2393,7 @@
"Optional notes about this channel": "Notes optionnelles sur ce canal",
"Optional notes about when to use this group": "Notes optionnelles sur le moment d'utiliser ce groupe",
"Optional ratio used when upstream cache hits occur.": "Ratio optionnel utilisé en cas de succès du cache en amont.",
"Optional rule description": "Description facultative de la règle",
"Optional settings for advanced container configuration.": "Paramètres optionnels pour la configuration avancée du conteneur.",
"Optional supplementary information (max 100 characters)": "Informations supplémentaires optionnelles (max 100 caractères)",
"Optional tag for grouping channels": "Étiquette optionnelle pour regrouper les canaux",
@@ -2318,6 +2418,8 @@
"Override request headers (JSON format)": "Surcharge des en-têtes de requête (format JSON)",
"Override request parameters (JSON format)": "Remplacer les paramètres de requête (format JSON)",
"Override request parameters. Cannot override": "Remplacer les paramètres de requête. Impossible de remplacer",
"Override request parameters. Cannot override stream parameter.": "Remplace les paramètres de requête. Impossible de remplacer le paramètre stream.",
"Override Rules": "Règles de remplacement",
"Override the endpoint used for testing. Leave empty to auto detect.": "Remplacer le point de terminaison utilisé pour les tests. Laisser vide pour la détection automatique.",
"overrides for matching model prefix.": "remplace le tarif si le modèle a ce préfixe.",
"Overview": "Vue d'ensemble",
@@ -2327,7 +2429,10 @@
"PaLM": "PaLM",
"Pan": "Panoramique",
"Param Override": "Remplacement de paramètre",
"Parameter configuration error": "Erreur de configuration des paramètres",
"Parameter Override": "Remplacement de paramètre",
"Parameter override must be a valid JSON object": "La substitution de paramètres doit être un objet JSON valide",
"Parameter override must be valid JSON format": "La substitution de paramètres doit être au format JSON valide",
"Parameter Override Template (JSON)": "Modèle de remplacement de paramètres (JSON)",
"Parameter override template must be a JSON object": "Le modèle de remplacement de paramètres doit être un objet JSON",
"parameter.": "paramètre.",
@@ -2336,7 +2441,9 @@
"Partial Submission": "Soumission partielle",
"Pass Headers": "Transmettre les en-têtes",
"Pass request body directly to upstream": "Transmettre le corps de la requête directement à l'upstream",
"Pass specified request headers to upstream": "Transmettre les en-têtes de requête spécifiés en amont",
"Pass Through Body": "Corps de transmission directe",
"Pass Through Headers": "Transmettre les en-têtes",
"Pass through the anthropic-beta header for beta features": "Transmettre l'en-tête anthropic-beta pour les fonctionnalités bêta",
"Pass through the include field for usage obfuscation": "Transmettre le champ include pour l'obfuscation d'utilisation",
"Pass through the inference_geo field for Claude data residency region control": "Transmettre le champ inference_geo pour le contrôle de la région de résidence des données Claude",
@@ -2344,7 +2451,9 @@
"Pass through the safety_identifier field": "Transmettre le champ safety_identifier",
"Pass through the service_tier field": "Transmettre le champ service_tier",
"Pass through the speed field for Claude inference speed mode control": "Transmettre le champ speed pour le contrôle du mode de vitesse d'inférence Claude",
"Pass when key is missing": "Accepter si la clé est absente",
"Pass-Through": "Transmission directe",
"Pass-through Headers (comma-separated or JSON array)": "En-têtes passthrough (séparés par des virgules ou tableau JSON)",
"Passkey": "Passkey",
"Passkey Authentication": "Authentification Passkey",
"Passkey is not available in this browser": "Passkey n'est pas disponible dans ce navigateur",
@@ -2360,6 +2469,7 @@
"Passkey registration was cancelled": "L'enregistrement de la Passkey a été annulé",
"Passkey removed successfully": "Passkey supprimée avec succès",
"Passkey reset successfully": "Passkey réinitialisée avec succès",
"Passthrough Template": "Modèle de transmission",
"Password": "Mot de passe",
"Password / Access Token": "Mot de passe / Jeton d'accès",
"Password changed successfully": "Mot de passe changé avec succès",
@@ -2374,6 +2484,7 @@
"Passwords do not match": "Les mots de passe ne correspondent pas",
"Paste the full callback URL (includes code & state)": "Coller l'URL de callback complète (inclut code et state)",
"Path": "Chemin",
"Path not set": "Chemin non défini",
"Path Regex (one per line)": "Regex du chemin (un par ligne)",
"Path:": "Chemin :",
"Pay": "Pay",
@@ -2496,11 +2607,15 @@
"Prefix": "Préfixe",
"Prefix Match": "Correspondance de préfixe",
"Prefix used when displaying prices": "Préfixe utilisé lors de l'affichage des prix",
"Prefix/Suffix Text": "Texte préfixe/suffixe",
"Premium chat models": "Modèles de chat Premium",
"Preparing chat keys…": "Préparation des clés de chat…",
"Preparing your chat link, please try again in a moment.": "Préparation de votre lien de discussion, veuillez réessayer dans un instant.",
"Preparing your chat link…": "Préparation de votre lien de chat…",
"Prepend": "Ajouter au début",
"Prepend to Start": "Ajouter au début",
"Prepend value to array / string / object start": "Ajouter la valeur au début du tableau / chaîne / objet",
"Preserve the original field when applying this rule": "Conserver le champ original lors de lapplication de cette règle",
"Preset recharge amounts (JSON array)": "Montants de recharge prédéfinis (tableau JSON)",
"Preset recharge amounts displayed to users": "Montants de recharge prédéfinis affichés aux utilisateurs",
"Preset Template": "Modèle prédéfini",
@@ -2577,7 +2692,11 @@
"Provider Name": "Nom du fournisseur",
"Provider type (OpenAI, Anthropic, etc.)": "Type de fournisseur (OpenAI, Anthropic, etc.)",
"Provider updated successfully": "Fournisseur mis à jour avec succès",
"Provider-specific endpoint, account, and compatibility settings.": "Paramètres de point daccès, de compte et de compatibilité propres au fournisseur.",
"Proxy Address": "Adresse du proxy",
"Prune Object Items": "Nettoyer les éléments objet",
"Prune object items by conditions": "Nettoyer les éléments d'objets par conditions",
"Prune Rule (string or JSON object)": "Règle de nettoyage (chaîne ou objet JSON)",
"Publish Date": "Date de publication",
"Published": "Publié",
"Published:": "Publié :",
@@ -2619,6 +2738,7 @@
"Random": "Aléatoire",
"Randomly select a key from the pool for each request": "Sélectionner aléatoirement une clé du pool pour chaque requête",
"Rate Limit Windows": "Fenêtres de limitation",
"Rate Limited": "Limitation de débit",
"Rate Limiting": "Limitation du débit",
"Ratio": "Ratio",
"Ratio applied to audio completions for streaming models.": "Ratio appliqué aux complétions audio pour les modèles de streaming.",
@@ -2648,6 +2768,8 @@
"Recommended to keep this high to avoid upstream throttling.": "Il est recommandé de maintenir cette valeur élevée pour éviter la limitation en amont.",
"Record IP Address": "Enregistrer l'adresse IP",
"Record quota usage": "Enregistrer l'utilisation du quota",
"Recursion Strategy": "Stratégie de récursion",
"Recursive": "Récursif",
"Redeem": "Utiliser",
"Redeem codes": "Échanger des codes",
"Redeemed By": "Utilisé par",
@@ -2681,6 +2803,8 @@
"Refund Details": "Détails du remboursement",
"Regenerate": "Régénérer",
"Regenerate Backup Codes": "Régénérer les codes de secours",
"Regex": "Regex",
"Regex Pattern": "Expression régulière",
"Regex Replace": "Remplacement regex",
"Register Passkey": "Enregistrer un Passkey",
"Registration Enabled": "Inscription activée",
@@ -2709,6 +2833,9 @@
"Remove Passkey": "Supprimer le Passkey",
"Remove Passkey?": "Supprimer la clé d'accès ?",
"Remove rule group": "Supprimer le groupe de règles",
"Remove string prefix": "Supprimer le préfixe de la chaîne",
"Remove string suffix": "Supprimer le suffixe de la chaîne",
"Remove the target field": "Supprimer le champ cible",
"Remove tier": "Supprimer le palier",
"Removed": "Supprimé",
"Removed {{removed}} duplicate key(s). Before: {{before}}, After: {{after}}": "{{removed}} clé(s) en double supprimée(s). Avant : {{before}}, Après : {{after}}",
@@ -2724,6 +2851,7 @@
"Replace all existing keys": "Remplacer toutes les clés existantes",
"Replace channel models": "Remplacer les modèles du canal",
"Replace mode: Will completely replace all existing keys": "Mode remplacement : Remplacera complètement toutes les clés existantes",
"Replace With": "Remplacer par",
"replaced": "remplacé",
"Replacement Model": "Modèle de remplacement",
"Replica count": "Nombre de réplicas",
@@ -2731,6 +2859,7 @@
"request": "requête",
"Request": "Requête",
"Request Body Disk Cache": "Cache disque du corps de requête",
"Request Body Field": "Champ du corps de requête",
"Request Body Memory Cache": "Cache mémoire du corps de requête",
"Request body pass-through is enabled. The request body will be sent directly to the upstream without any conversion.": "Le passage du corps de requête est activé. Le corps sera envoyé directement en amont sans conversion.",
"Request conversion": "Conversion de requête",
@@ -2738,11 +2867,14 @@
"Request Count": "Nombre de requêtes",
"Request failed": "Échec de la requête",
"Request flow": "Flux de requête",
"Request Header Field": "Champ d'en-tête de requête",
"Request Header Override": "Remplacement des en-têtes de requête",
"Request Header Overrides": "Remplacements d'en-têtes de requête",
"Request ID": "ID de requête",
"Request Limits": "Limites de requêtes",
"Request Model": "Modèle demandé",
"Request Model:": "Modèle demandé :",
"Request overrides, routing behavior, and upstream model automation": "Surcharges de requête, comportement de routage et automatisation des modèles amont",
"Request rule pricing": "Règles de tarification de requête",
"Request timed out, please refresh and restart GitHub login": "Délai dépassé, veuillez actualiser la page puis relancer la connexion GitHub",
"Request-based": "Selon la requête",
@@ -2755,6 +2887,7 @@
"Require login to view models": "Exiger la connexion pour voir les modèles",
"Required": "Requis",
"Required events:": "Événements requis :",
"Required provider, authentication, model, and group settings": "Paramètres requis de fournisseur, authentification, modèles et groupes",
"Required to expose Midjourney-style image generation to end users.": "Requis pour exposer la génération d'images style Midjourney aux utilisateurs finaux.",
"Rerank": "Reclasser",
"Reroll": "Relancer",
@@ -2789,7 +2922,10 @@
"Retain last N files": "Conserver les N derniers fichiers",
"Retry": "Réessayer",
"Retry Chain": "Chaîne de tentatives",
"Retry Suggestion": "Suggestion de relance",
"Retry Times": "Nombre de tentatives",
"Return a custom error immediately": "Retourner immédiatement une erreur personnalisée",
"Return Custom Error": "Retourner une erreur personnalisée",
"Return Error": "Retourner l'erreur",
"Return to dashboard": "Retour au tableau de bord",
"Reveal API key": "Afficher la clé API",
@@ -2806,13 +2942,25 @@
"Route": "Route",
"Route Description": "Description de la route",
"Route is required": "La route est requise",
"Routing & Overrides": "Routage et surcharges",
"Routing Strategy": "Stratégie de routage",
"Rows per page": "Lignes par page",
"RPM": "RPM",
"RSA Private Key (Production)": "Clé privée RSA (Production)",
"RSA Private Key (Sandbox)": "Clé privée RSA (Sandbox)",
"Rule": "Règle",
"Rule {{line}} is missing source field": "La règle {{line}} n'a pas de champ source",
"Rule {{line}} is missing target field": "La règle {{line}} n'a pas de champ cible",
"Rule {{line}} is missing target path": "La règle {{line}} n'a pas de chemin cible",
"Rule {{line}} is missing value": "La règle {{line}} n'a pas de valeur",
"Rule {{line}} pass_headers format is invalid": "Le format pass_headers de la règle {{line}} est invalide",
"Rule {{line}} pass_headers is missing header names": "La règle {{line}} pass_headers n'a pas de noms d'en-têtes",
"Rule {{line}} prune_objects is missing conditions": "La règle {{line}} prune_objects n'a pas de conditions",
"Rule {{line}} return_error requires a message field": "La règle {{line}} return_error nécessite un champ message",
"Rule Description (optional)": "Description de la règle (optionnel)",
"Rule group": "Groupe de règles",
"rules": "règles",
"Rules": "Règles",
"Rules JSON": "Règles JSON",
"Rules JSON must be an array": "Le JSON des règles doit être un tableau",
"Run GC": "Exécuter le GC",
@@ -2861,12 +3009,14 @@
"Scan the QR code to follow the official account and reply with “验证码” to receive your verification code.": "Scannez le code QR pour suivre le compte officiel et répondez par « 验证码 » pour recevoir votre code de vérification.",
"Scan the QR code with WeChat to bind your account": "Scannez le code QR avec WeChat pour lier votre compte",
"Scan this QR code with your authenticator app (Google Authenticator, Microsoft Authenticator, etc.)": "Scannez ce code QR avec votre application d'authentification (Google Authenticator, Microsoft Authenticator, etc.)",
"Scenario Templates": "Modèles de scénario",
"Scheduled channel tests": "Tests de canaux planifiés",
"Scope": "Portée",
"Scopes": "Portées",
"Search": "Rechercher",
"Search by name or URL...": "Rechercher par nom ou URL...",
"Search by order number...": "Rechercher par numéro de commande...",
"Search channel type...": "Rechercher un type de canal...",
"Search chat presets...": "Rechercher des préréglages de chat...",
"Search colors...": "Rechercher des couleurs...",
"Search conflicting models or fields": "Rechercher des modèles ou champs en conflit",
@@ -2882,6 +3032,7 @@
"Search payment methods...": "Rechercher des méthodes de paiement...",
"Search payment types...": "Rechercher des types de paiement...",
"Search products...": "Rechercher des produits...",
"Search rules...": "Rechercher des règles…",
"Search tags...": "Rechercher des tags...",
"Search vendors...": "Rechercher des fournisseurs...",
"Search...": "Rechercher...",
@@ -2899,6 +3050,7 @@
"Select a group type": "Sélectionner un type de groupe",
"Select a preset...": "Sélectionner un préréglage...",
"Select a role": "Sélectionner un rôle",
"Select a rule to edit.": "Sélectionnez une règle à modifier.",
"Select a timestamp before clearing logs.": "Sélectionnez un horodatage avant de vider les journaux.",
"Select a usage mode to continue": "Sélectionnez un mode d'utilisation pour continuer",
"Select a verification method first": "Sélectionnez d'abord une méthode de vérification",
@@ -2973,13 +3125,16 @@
"Set a discount rate for a specific recharge amount threshold.": "Définir un taux de réduction pour un seuil de montant de recharge spécifique.",
"Set a secure password (min. 8 characters)": "Définir un mot de passe sécurisé (min. 8 caractères)",
"Set a tag for": "Définir un tag pour",
"Set filters to customize your dashboard statistics and charts.": "Définir des filtres pour personnaliser les statistiques et les graphiques de votre tableau de bord.",
"Set filters to narrow down your log search results.": "Définir des filtres pour affiner vos résultats de recherche de journaux.",
"Set API key access restrictions": "Définir les restrictions d'accès de la clé API",
"Set API key basic information": "Définir les informations de base de la clé API",
"Set Field": "Définir le champ",
"Set filters to customize your dashboard statistics and charts.": "Définir des filtres pour personnaliser les statistiques et les graphiques de votre tableau de bord.",
"Set filters to narrow down your log search results.": "Définir des filtres pour affiner vos résultats de recherche de journaux.",
"Set Header": "Définir l'en-tête",
"Set Project to io.cloud when creating/selecting key": "Définir le projet sur io.cloud lors de la création/sélection de la clé",
"Set quota amount and limits": "Définir le quota et les limites",
"Set Request Header": "Définir un en-tête de requête",
"Set runtime request header: override entire value, or manipulate comma-separated tokens": "Définir l'en-tête de requête : remplacer la valeur ou manipuler les tokens séparés par des virgules",
"Set Tag": "Définir un tag",
"Set tag for selected channels": "Définir un tag pour les canaux sélectionnés",
"Set the user's role (cannot be Root)": "Définir le rôle de l'utilisateur (ne peut pas être Root)",
@@ -3019,6 +3174,9 @@
"Signed out": "Déconnecté",
"Signing you in with {{provider}}": "Connexion avec {{provider}}",
"SiliconFlow": "SiliconFlow",
"Simple": "Simple",
"Simple mode only returns message; status code and error type use system defaults.": "Le mode simple ne retourne que le message ; le code de statut et le type d'erreur utilisent les valeurs par défaut.",
"Simple mode: prune objects by type, e.g. redacted_thinking.": "Mode simple : nettoyer les objets par type, ex. redacted_thinking.",
"Single Key": "Clé unique",
"Site Key": "Clé du site",
"Size:": "Taille :",
@@ -3043,6 +3201,9 @@
"Sort by ID": "Trier par ID",
"Sort Order": "Ordre de tri",
"Source": "Source",
"Source Endpoint": "Point source",
"Source Field": "Champ source",
"Source Header": "En-tête source",
"sources": "sources",
"Space-separated OAuth scopes": "Scopes OAuth séparés par des espaces",
"Spark model version, e.g., v2.1 (version number in API URL)": "Version du modèle Spark, par exemple v2.1 (numéro de version dans l'URL de l'API)",
@@ -3061,6 +3222,7 @@
"Statistics reset": "Statistiques réinitialisées",
"Status": "Statut",
"Status & Sync": "Statut et synchronisation",
"Status Code": "Code de statut",
"Status Code Mapping": "Mappage des codes d'état",
"Status Page Slug": "Slug de la page d'état",
"Status:": "Statut :",
@@ -3068,6 +3230,7 @@
"Stay tuned though!": "Restez à l'écoute cependant !",
"Step": "Étape",
"Stop": "Arrêter",
"Stop Retry": "Arrêter la relance",
"Store ID": "ID du magasin",
"Store ID is required": "L'ID de magasin est requis",
"Stored value is not echoed back for security": "Par sécurité, la valeur enregistrée n'est pas affichée",
@@ -3075,6 +3238,7 @@
"Stream": "Flux",
"Stream Mode": "Mode streaming",
"Stream Status": "Statut du flux",
"String Replace": "Remplacement de texte",
"Stripe": "Stripe",
"Stripe API key (leave blank unless updating)": "Clé API Stripe (laisser vide sauf en cas de mise à jour)",
"Stripe Dashboard": "Tableau de bord Stripe",
@@ -3111,6 +3275,7 @@
"Super Admin": "Super Administrateur",
"Support for high concurrency with automatic load balancing": "Prise en charge de la haute concurrence avec équilibrage de charge automatique",
"Supported Imagine Models": "Modèles Imagine pris en charge",
"Supported variables": "Variables supportées",
"Supports `-thinking`, `-thinking-": "Prend en charge `-thinking`, `-thinking-",
"Supports HTML markup or iframe embedding. Enter HTML code directly, or provide a complete URL to automatically embed it as an iframe.": "Prend en charge le balisage HTML ou l'intégration d'iframe. Entrez le code HTML directement, ou fournissez une URL complète pour l'intégrer automatiquement en tant qu'iframe.",
"Supports PNG, JPG, SVG, or WebP. Recommended size: 128×128 or smaller.": "Prend en charge PNG, JPG, SVG ou WebP. Taille recommandée : 128×128 ou moins.",
@@ -3120,6 +3285,7 @@
"Switch to JSON": "Passer à JSON",
"Switch to Visual": "Passer à l'affichage visuel",
"Sync Endpoint": "Point de terminaison de synchronisation",
"Sync Endpoints": "Points de synchronisation",
"Sync Fields": "Synchroniser les champs",
"Sync from the public upstream metadata repository.": "Synchroniser depuis le dépôt de métadonnées public en amont.",
"Sync this model with official upstream": "Synchroniser ce modèle avec la source amont officielle",
@@ -3161,7 +3327,12 @@
"Tags": "Balises",
"Take photo": "Prendre une photo",
"Take screenshot": "Prendre une capture d'écran",
"Target Endpoint": "Point cible",
"Target Field": "Champ cible",
"Target Field Path": "Chemin du champ cible",
"Target group": "Groupe cible",
"Target Header": "En-tête cible",
"Target Path (optional)": "Chemin cible (optionnel)",
"Task": "Tâche",
"Task ID": "ID de la tâche",
"Task ID:": "ID de tâche :",
@@ -3172,6 +3343,7 @@
"Telegram": "Telegram",
"Telegram login requires widget integration; coming soon": "La connexion Telegram nécessite l'intégration d'un widget ; disponible bientôt",
"Telegram Login Widget": "Widget de connexion Telegram",
"Template": "Modèle",
"Template variables:": "Variables de modèle :",
"Templates": "Modèles",
"Templates appended": "Modèles ajoutés",
@@ -3276,9 +3448,11 @@
"to access this resource.": "pour accéder à cette ressource.",
"to confirm": "pour confirmer",
"To Lower": "En minuscules",
"To Lowercase": "En minuscules",
"to override billing when a user in one group uses a token of another group.": "pour remplacer la facturation lorsqu'un utilisateur d'un groupe utilise un jeton d'un autre groupe.",
"to the Models list so users can use them before the mapping sends traffic upstream.": "à la liste des modèles afin que les utilisateurs puissent les utiliser avant que le mappage n'envoie le trafic en amont.",
"To Upper": "En majuscules",
"To Uppercase": "En majuscules",
"to view this resource.": "pour afficher cette ressource.",
"Today": "Aujourd'hui",
"Toggle columns": "Basculer les colonnes",
@@ -3309,8 +3483,8 @@
"Tool prices": "Prix des outils",
"Top {{count}}": "Top {{count}}",
"Top Models": "Top Modèles",
"Top Users": "Top utilisateurs",
"Top up balance and view billing history.": "Recharger le solde et consulter l'historique de facturation.",
"Top Users": "Top utilisateurs",
"Top-up": "Recharge",
"Top-up amount options": "Options de montant de recharge",
"Top-up Audit Info": "Audits de rechargement",
@@ -3349,6 +3523,7 @@
"Transfer to Balance": "Transférer vers le solde",
"Translate `-thinking` suffixes into Anthropic native thinking models while keeping pricing predictable.": "Traduire les suffixes `-thinking` en modèles de réflexion natifs Anthropic tout en gardant une tarification prévisible.",
"Transparent Billing": "Facturation transparente",
"Trim leading/trailing whitespace": "Supprimer les espaces en début/fin",
"Trim Prefix": "Supprimer le préfixe",
"Trim Space": "Supprimer les espaces",
"Trim Suffix": "Supprimer le suffixe",
@@ -3357,6 +3532,7 @@
"TTL": "TTL",
"TTL (seconds, 0 = default)": "TTL (secondes, 0 = par défaut)",
"TTL (seconds)": "TTL (secondes)",
"Tune selection priority, testing, status handling, and request overrides.": "Ajustez la priorité de sélection, les tests, la gestion des statuts et les surcharges de requête.",
"Turnstile is enabled but site key is empty.": "Turnstile est activé mais la clé du site est vide.",
"Two-factor Authentication": "Authentification à deux facteurs",
"Two-Factor Authentication": "Authentification à deux facteurs",
@@ -3365,6 +3541,7 @@
"Two-factor authentication reset": "Authentification à deux facteurs réinitialisée",
"Two-Step Verification": "Validation en deux étapes",
"Type": "Type",
"Type (common)": "Type (commun)",
"Type *": "Type *",
"Type a command or search...": "Tapez une commande ou recherchez...",
"Type-Specific Settings": "Paramètres spécifiques au type",
@@ -3375,6 +3552,7 @@
"Unable to load groups": "Impossible de charger les groupes",
"Unable to open chat": "Impossible d'ouvrir la discussion",
"Unable to prepare chat link. Please ensure you have an enabled API key.": "Impossible de préparer le lien de chat. Veuillez vous assurer d'avoir une clé API activée.",
"Unauthorized": "Non autorisé",
"Unauthorized Access": "Accès non autorisé",
"Unbind": "Dissocier",
"Unbind failed": "Échec de la dissociation",
@@ -3431,6 +3609,7 @@
"Upload photo": "Téléverser une photo",
"Upscale": "Agrandir",
"Upstream": "Amont",
"Upstream Model Detection Settings": "Paramètres de détection des modèles en amont",
"Upstream Model Update Check": "Vérification des mises à jour des modèles en amont",
"Upstream Model Updates": "Mises à jour des modèles en amont",
"Upstream model updates applied: {{added}} added, {{removed}} removed, {{ignored}} ignored this time, {{totalIgnored}} total ignored models": "Mises à jour des modèles en amont appliquées : {{added}} ajoutés, {{removed}} supprimés, {{ignored}} ignorés cette fois, {{totalIgnored}} modèles ignorés au total",
@@ -3511,6 +3690,7 @@
"Validity": "Validité",
"Validity Period": "Période de validité",
"Value": "Valeur",
"Value (supports JSON or plain text)": "Valeur (JSON ou texte brut)",
"Value must be at least 0": "La valeur doit être au moins 0",
"Value Regex": "Regex de valeur",
"variable": "variable",
@@ -3573,10 +3753,12 @@
"Visit Settings → General and adjust quota options...": "Visitez Paramètres → Général et ajustez les options de quota...",
"Visitors must authenticate before accessing the pricing directory.": "Les visiteurs doivent s'authentifier avant d'accéder au répertoire des prix.",
"Visual": "Visuel",
"Visual edit": "Édition visuelle",
"Visual editor": "Éditeur visuel",
"Visual Editor": "Éditeur Visuel",
"Visual indicator color for the API card": "Couleur de l'indicateur visuel pour la carte API",
"Visual Mode": "Mode Visuel",
"Visual Parameter Override": "Remplacement visuel des paramètres",
"VolcEngine": "VolcEngine",
"Waffo Pancake Payment Gateway": "Passerelle de paiement Waffo Pancake",
"Waffo Payment": "Paiement Waffo",
@@ -3633,6 +3815,7 @@
"When enabled, the store field will be blocked": "Lorsqu'il est activé, le champ de la boutique sera bloqué",
"When enabled, violation requests will incur additional charges.": "Lorsqu'activé, les requêtes en violation entraîneront des frais supplémentaires.",
"When enabled, zero-cost models also pre-consume quota before final settlement.": "Lorsqu'elle est activée, les modèles à coût zéro pré-consomment également du quota avant le règlement final.",
"When no conditions are set, the operation always executes.": "Sans conditions, l'opération s'exécute toujours.",
"When performance monitoring is enabled and system resource usage exceeds the set threshold, new Relay requests will be rejected.": "Lorsque la surveillance des performances est activée et que les ressources dépassent le seuil, les nouvelles requêtes Relay seront rejetées.",
"When running in containers or ephemeral environments, ensure the SQLite file is mapped to persistent storage to avoid data loss on restart.": "Lors de l'exécution dans des conteneurs ou des environnements éphémères, assurez-vous que le fichier SQLite est mappé à un stockage persistant pour éviter la perte de données au redémarrage.",
"Whitelist": "Liste blanche",
@@ -3641,10 +3824,12 @@
"whsec_xxx": "whsec_xxx",
"Window:": "Fenêtre :",
"with conflicts": "avec des conflits",
"Without additional conditions, only the type above is used for pruning.": "Sans conditions supplémentaires, seul le type ci-dessus est utilisé pour le nettoyage.",
"Worker Access Key": "Clé d'accès du Worker",
"Worker Proxy": "Proxy Worker",
"Worker URL": "URL du Worker",
"Workspaces": "Espaces de travail",
"Write value to the target field": "Écrire la valeur dans le champ cible",
"x": "x",
"xAI": "xAI",
"Xinference": "Xinference",
@@ -3678,6 +3863,7 @@
"Your Turnstile site key": "Votre clé de site Turnstile",
"Zhipu": "Zhipu",
"Zhipu V4": "Zhipu V4",
"Zoom": "Zoom"
"Zoom": "Zoom",
"Legacy Format Template": "Modèle ancien format"
}
}