mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-23 04:09:49 +00:00
* feat(model-select-modal): highlight added models and support bulk selection - Add addedModelValues prop to highlight already-added models with primary color - Sort models alphabetically per provider, with added models floated to top - Replace green highlight with primary brand color (orange #E56A4A) - Use check icon (10px) inline with model name instead of check_circle - Replace Done button with info bar explaining click-to-toggle behavior - Add ProviderIcon to provider group headers replacing colored dot - Import ProviderIcon, remove unused Button import * feat(cli-tools): wire addedModelValues, onDeselect, and auto-save to model select modals - Pass selectedModels as addedModelValues to ModelSelectModal in OpenCode and Copilot cards - Add onDeselect handler to remove model from list on second click - Set closeOnSelect=false to allow bulk model selection - Remove manual setModalOpen(false) from onSelect callbacks - Add saveModels() silent auto-save triggered on modal close (OpenCodeToolCard) - Use useRef to track latest selectedModels in closure-safe way * feat(modal): functional traffic light close button with hover icon and tooltip - Make red dot a clickable button that closes the modal - Show ✕ icon inside red dot on hover via group-hover opacity transition - Gray out yellow and green dots (cursor-not-allowed, no tooltip) - Increase dot size from w-3 h-3 to w-4 h-4 - Add Tooltip with brand-matched color #FF5F56 on red dot - Remove X close button from modal header * feat(tooltip): add color prop for themed tooltip backgrounds * feat(i18n): add translations for model select info bar and close tooltip - Add 'Click to add, click again to remove. Changes are saved automatically.' to all 32 locales - Add 'Close' translation to all 32 locales * fix(ui): address code review feedback on modal UX and auto-save - Modal: remove showCloseButton prop, use showTrafficLights for header condition, hide traffic lights on mobile (hidden md:flex), add mobile X button (md:hidden) with aria-label, add aria-label and title on traffic light close button - OpenCodeToolCard: validate activeModel membership before saving — fallback to models[0] or empty string; clear/reassign activeModel on deselect when removed model was the active one - CopilotToolCard: add useRef + selectedModelsRef, add saveModels() using /api/cli-tools/copilot-settings, wire auto-save on modal close - ModelSelectModal: fix JSX formatting — separate info bar closing div from Search comment onto its own line
193 lines
9.1 KiB
JSON
193 lines
9.1 KiB
JSON
{
|
|
"Cancel": "Annuler",
|
|
"Delete": "Supprimer",
|
|
"Edit": "Modifier",
|
|
"Save": "Enregistrer",
|
|
"Close": "Fermer",
|
|
"Add": "Ajouter",
|
|
"Remove": "Retirer",
|
|
"Settings": "Paramètres",
|
|
"Profile": "Profil",
|
|
"Dashboard": "Tableau de bord",
|
|
"Logout": "Déconnexion",
|
|
"Login": "Connexion",
|
|
"Providers": "Fournisseurs",
|
|
"Usage": "Statistiques",
|
|
"API Key": "Clé API",
|
|
"Connected": "Connecté",
|
|
"Disconnected": "Déconnecté",
|
|
"Active": "Actif",
|
|
"Inactive": "Inactif",
|
|
"Success": "Succès",
|
|
"Failed": "Échoué",
|
|
"Error": "Erreur",
|
|
"Warning": "Avertissement",
|
|
"Info": "Informations",
|
|
"Loading": "Chargement",
|
|
"Search": "Rechercher",
|
|
"Filter": "Filtrer",
|
|
"Sort": "Trier",
|
|
"Export": "Exporter",
|
|
"Import": "Importer",
|
|
"Refresh": "Actualiser",
|
|
"Back": "Retour",
|
|
"Next": "Suivant",
|
|
"Previous": "Précédent",
|
|
"Submit": "Soumettre",
|
|
"Confirm": "Confirmer",
|
|
"Yes": "Oui",
|
|
"No": "Non",
|
|
"OK": "OK",
|
|
"Apply": "Appliquer",
|
|
"Reset": "Réinitialiser",
|
|
"Clear": "Effacer",
|
|
"Select": "Sélectionner",
|
|
"Upload": "Télécharger",
|
|
"Download": "Télécharger",
|
|
"Copy": "Copier",
|
|
"Paste": "Coller",
|
|
"Cut": "Couper",
|
|
"Undo": "Annuler",
|
|
"Redo": "Refaire",
|
|
"Name": "Nom",
|
|
"Description": "Description",
|
|
"Status": "Statut",
|
|
"Type": "Type",
|
|
"Date": "Date",
|
|
"Time": "Heure",
|
|
"Created": "Créé",
|
|
"Updated": "Modifié",
|
|
"Actions": "Actions",
|
|
"Details": "Détails",
|
|
"View": "Afficher",
|
|
"New": "Nouveau",
|
|
"Total": "Total",
|
|
"Count": "Nombre",
|
|
"Price": "Prix",
|
|
"Cost": "Coût",
|
|
"Free": "Gratuit",
|
|
"Paid": "Payant",
|
|
"Enable": "Activer",
|
|
"Disable": "Désactiver",
|
|
"Enabled": "Activé",
|
|
"Disabled": "Désactivé",
|
|
"Online": "En ligne",
|
|
"Offline": "Hors ligne",
|
|
"Available": "Disponible",
|
|
"Unavailable": "Indisponible",
|
|
"Required": "Requis",
|
|
"Optional": "Facultatif",
|
|
"Default": "Par défaut",
|
|
"Custom": "Personnalisé",
|
|
"Advanced": "Avancé",
|
|
"Basic": "Basique",
|
|
"Help": "Aide",
|
|
"Support": "Support",
|
|
"Documentation": "Documentation",
|
|
"Version": "Version",
|
|
"Language": "Langue",
|
|
"Theme": "Thème",
|
|
"Light": "Clair",
|
|
"Dark": "Sombre",
|
|
"Auto": "Automatique",
|
|
"Endpoint": "Point final",
|
|
"Combos": "Combinaisons",
|
|
"Quota Tracker": "Suivi des quotas",
|
|
"MITM": "MITM",
|
|
"CLI Tools": "Outils CLI",
|
|
"Console Log": "Journaux de console",
|
|
"System": "Système",
|
|
"Debug": "Débogage",
|
|
"Shutdown": "Arrêt",
|
|
"Close Proxy": "Fermer le proxy",
|
|
"Are you sure you want to close the proxy server?": "Êtes-vous sûr de vouloir fermer le serveur proxy ?",
|
|
"Server Disconnected": "Serveur déconnecté",
|
|
"The proxy server has been stopped.": "Le serveur proxy a été arrêté.",
|
|
"Reload Page": "Recharger la page",
|
|
"Service is running in terminal. You can close this web page. Shutdown will stop the service.": "Le service s'exécute dans le terminal. Vous pouvez fermer cette page web. L'arrêt arrêtera le service.",
|
|
"Manage your AI provider connections": "Gérez vos connexions de fournisseur IA",
|
|
"Model combos with fallback": "Combinaisons de modèles avec secours",
|
|
"Monitor your API usage, token consumption, and request logs": "Surveillez votre utilisation d'API, la consommation de jetons et les journaux de requête",
|
|
"Intercept CLI tool traffic and route through 9Router": "Interceptez le trafic des outils CLI et acheminez via 9Router",
|
|
"Configure CLI tools": "Configurer les outils CLI",
|
|
"API endpoint configuration": "Configuration du point final API",
|
|
"Manage your preferences": "Gérez vos préférences",
|
|
"Debug translation flow between formats": "Déboguer le flux de traduction entre les formats",
|
|
"Live server console output": "Sortie de la console du serveur en direct",
|
|
"Create model combos with fallback support": "Créer des combinaisons de modèles avec support de secours",
|
|
"Local Mode": "Mode local",
|
|
"Running on your machine": "S'exécute sur votre machine",
|
|
"Database Location": "Emplacement de la base de données",
|
|
"Download Backup": "Télécharger la sauvegarde",
|
|
"Import Backup": "Importer la sauvegarde",
|
|
"Database backup downloaded": "Sauvegarde de la base de données téléchargée",
|
|
"Database imported successfully": "Base de données importée avec succès",
|
|
"Security": "Sécurité",
|
|
"Require login": "Exiger une connexion",
|
|
"When ON, dashboard requires password. When OFF, access without login.": "Lorsqu'il est ACTIVÉ, le tableau de bord nécessite un mot de passe. Lorsqu'il est DÉSACTIVÉ, accès sans connexion.",
|
|
"Current Password": "Mot de passe actuel",
|
|
"Enter current password": "Entrez le mot de passe actuel",
|
|
"New Password": "Nouveau mot de passe",
|
|
"Enter new password": "Entrez le nouveau mot de passe",
|
|
"Confirm New Password": "Confirmer le nouveau mot de passe",
|
|
"Confirm new password": "Confirmez le nouveau mot de passe",
|
|
"Update Password": "Mettre à jour le mot de passe",
|
|
"Set Password": "Définir le mot de passe",
|
|
"Password updated successfully": "Mot de passe mis à jour avec succès",
|
|
"Passwords do not match": "Les mots de passe ne correspondent pas",
|
|
"Routing Strategy": "Stratégie d'acheminement",
|
|
"Round Robin": "Round Robin",
|
|
"Cycle through accounts to distribute load": "Parcourir les comptes pour distribuer la charge",
|
|
"Sticky Limit": "Limite collante",
|
|
"Calls per account before switching": "Appels par compte avant de changer",
|
|
"Network": "Réseau",
|
|
"Outbound Proxy": "Proxy sortant",
|
|
"Enable proxy for OAuth + provider outbound requests.": "Activez le proxy pour OAuth + les demandes sortantes du fournisseur.",
|
|
"Proxy URL": "URL du proxy",
|
|
"Leave empty to inherit existing env proxy (if any).": "Laissez vide pour hériter du proxy env existant (le cas échéant).",
|
|
"No Proxy": "Pas de proxy",
|
|
"Comma-separated hostnames/domains to bypass the proxy.": "Noms d'hôtes/domaines séparés par des virgules pour contourner le proxy.",
|
|
"Test proxy URL": "Tester l'URL du proxy",
|
|
"Proxy settings applied": "Paramètres de proxy appliqués",
|
|
"Proxy enabled": "Proxy activé",
|
|
"Proxy disabled": "Proxy désactivé",
|
|
"Proxy test OK": "Test de proxy OK",
|
|
"Proxy test failed": "Échec du test de proxy",
|
|
"Please enter a Proxy URL to test": "Veuillez entrer une URL de proxy à tester",
|
|
"Observability": "Observabilité",
|
|
"Enable Observability": "Activer l'observabilité",
|
|
"Turn request detail recording on/off globally": "Activer/désactiver l'enregistrement des détails de la requête globalement",
|
|
"Max Records": "Nombre maximum d'enregistrements",
|
|
"Maximum request detail records to keep (older records are auto-deleted)": "Nombre maximum d'enregistrements de détails de requête à conserver (les anciens enregistrements sont supprimés automatiquement)",
|
|
"Batch Size": "Taille du lot",
|
|
"Number of items to accumulate before writing to database (higher = better performance)": "Nombre d'éléments à accumuler avant d'écrire dans la base de données (plus élevé = meilleures performances)",
|
|
"Flush Interval (ms)": "Intervalle de vidage (ms)",
|
|
"Maximum time to wait before flushing buffer (prevents data loss during low traffic)": "Temps maximum d'attente avant de vider le tampon (évite la perte de données en cas de faible trafic)",
|
|
"Max JSON Size (KB)": "Taille JSON maximale (KB)",
|
|
"Maximum size for each JSON field (request/response) before truncation": "Taille maximale pour chaque champ JSON (demande/réponse) avant la troncature",
|
|
"All data stored on your machine": "Toutes les données stockées sur votre machine",
|
|
"MITM Server": "Serveur MITM",
|
|
"Running": "En cours d'exécution",
|
|
"Stopped": "Arrêté",
|
|
"Cert": "Certificat",
|
|
"Server": "Serveur",
|
|
"Purpose:": "Objectif :",
|
|
"Use Antigravity IDE & GitHub Copilot → with ANY provider/model from 9Router": "Utilisez Antigravity IDE et GitHub Copilot → avec N'IMPORTE QUEL fournisseur/modèle de 9Router",
|
|
"How it works:": "Comment ça marche :",
|
|
"Antigravity/Copilot IDE request → DNS redirect to localhost:443 → MITM proxy intercepts → 9Router → response to Antigravity/Copilot": "Demande Antigravity/Copilot IDE → Redirection DNS vers localhost:443 → Le proxy MITM intercepte → 9Router → réponse à Antigravity/Copilot",
|
|
"No API keys — create one in Keys page": "Aucune clé API — créez-en une dans la page Clés",
|
|
"sk_9router (default)": "sk_9router (par défaut)",
|
|
"Server started": "Serveur démarré",
|
|
"Failed to start server": "Impossible de démarrer le serveur",
|
|
"Server stopped — all DNS cleared": "Serveur arrêté — tout DNS effacé",
|
|
"Failed to stop server": "Impossible d'arrêter le serveur",
|
|
"Sudo password is required": "Le mot de passe sudo est requis",
|
|
"Stop Server": "Arrêter le serveur",
|
|
"Start Server": "Démarrer le serveur",
|
|
"Enable DNS per tool below to activate interception": "Activez le DNS pour chaque outil ci-dessous pour activer l'interception",
|
|
"Sudo Password Required": "Mot de passe Sudo requis",
|
|
"Enter your sudo password to start/stop MITM server": "Entrez votre mot de passe sudo pour démarrer/arrêter le serveur MITM",
|
|
"Sudo Password": "Mot de passe sudo",
|
|
"Click to add, click again to remove. Changes are saved automatically.": "Cliquez pour ajouter, cliquez à nouveau pour supprimer. Les modifications sont enregistrées automatiquement."
|
|
}
|