refactor: codex usage ui (#5595)

* refactor: codex usage ui

* feat: show Codex reset credit details

* feat: add Codex usage reset flow
This commit is contained in:
Seefs
2026-06-19 16:07:32 +08:00
committed by GitHub
parent 6bd69f3edf
commit 3fcd741c6e
12 changed files with 1509 additions and 424 deletions
+32
View File
@@ -234,6 +234,7 @@
"Advanced Settings": "Paramètres avancés",
"Advanced text editing": "Édition de texte avancée",
"Aesthetic style": "Style esthétique",
"Affected windows:": "Fenêtres affectées :",
"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 ?",
@@ -394,6 +395,7 @@
"Apply Filters": "Appliquer les filtres",
"Apply IP Filter to Resolved Domains": "Appliquer le filtre IP aux domaines résolus",
"Apply Overwrite": "Appliquer l'écrasement",
"Apply reset": "Appliquer la réinitialisation",
"Apply Sync": "Appliquer la synchronisation",
"Applying...": "Application en cours...",
"Approx.": "Environ.",
@@ -485,8 +487,10 @@
"Automatically sync model list when upstream changes are detected": "Synchroniser automatiquement la liste des modèles lorsque des changements en amont sont détectés",
"Availability (last 24h)": "Disponibilité (dernières 24 h)",
"Available": "Disponible",
"Available credits are ordered by soonest expiration.": "Les crédits disponibles sont triés par expiration la plus proche.",
"Available disk space": "Espace disque disponible",
"Available Models": "Modèles disponibles",
"Available reset credits": "Crédits de réinitialisation disponibles",
"Available Rewards": "Récompenses disponibles",
"Average latency": "Latence moyenne",
"Average latency, TTFT, and success rate by group": "Latence moyenne, TTFT et taux de réussite par groupe",
@@ -686,6 +690,7 @@
"Channel enabled successfully": "Canal activé avec succès",
"Channel Extra Settings": "Paramètres supplémentaires du canal",
"Channel ID": "ID du Canal",
"Channel ID is required": "L'ID du canal est requis",
"Channel key": "Clé du canal",
"Channel key unlocked": "Clé de canal déverrouillée",
"Channel models": "Modèles de canaux",
@@ -811,6 +816,7 @@
"Codes copied!": "Codes copiés !",
"Codex": "Codex",
"Codex Account & Usage": "Compte et utilisation Codex",
"Codex Account Status": "Statut du compte Codex",
"Codex channels do not support batch creation": "Les canaux Codex ne prennent pas en charge la création par lot",
"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",
@@ -928,6 +934,7 @@
"Confirm settings and finish setup": "Confirmez les paramètres et terminez la configuration",
"confirm that I bear legal responsibility arising from deployment": "confirme assumer la responsabilité juridique découlant du déploiement",
"Confirm Unbind": "Confirmer la dissociation",
"Confirm usage reset": "Confirmer la réinitialisation de lutilisation",
"Confirm your identity before removing this Passkey from your account.": "Confirmez votre identité avant de supprimer cette Passkey de votre compte.",
"Confirm your identity with Two-factor Authentication before registering a Passkey.": "Confirmez votre identité avec lauthentification à deux facteurs avant denregistrer une Passkey.",
"Confirmed at {{time}} by user #{{userId}}": "Confirmé le {{time}} par lutilisateur #{{userId}}",
@@ -1625,6 +1632,8 @@
"Expired at": "Expiré le",
"Expired time cannot be earlier than current time": "L'heure d'expiration ne peut pas être antérieure à l'heure actuelle",
"Expires": "Expire",
"Expires at": "Expire le",
"Expires in": "Expire dans",
"Expose ratio API": "Exposer l'API de ratio",
"Exposes the pricing/models catalog in the top navigation.": "Expose le catalogue des prix/modèles dans la navigation supérieure.",
"Expression": "Expression",
@@ -1699,6 +1708,7 @@
"Failed to fetch deployment details": "Impossible de récupérer les détails du déploiement",
"Failed to fetch models": "Échec de la récupération des modèles",
"Failed to fetch OIDC configuration. Please check the URL and network status": "Échec de la récupération de la configuration OIDC. Veuillez vérifier l'URL et le statut du réseau",
"Failed to fetch reset credit details": "Échec de la récupération des détails des crédits de réinitialisation",
"Failed to fetch upstream prices": "Échec de la récupération des prix amont",
"Failed to fetch upstream ratios": "Échec de la récupération des ratios en amont",
"Failed to fetch usage": "Échec de la récupération de l'utilisation",
@@ -1732,6 +1742,7 @@
"Failed to reset 2FA": "Échec de la réinitialisation de la 2FA",
"Failed to reset model ratios": "Échec de la réinitialisation des ratios du modèle",
"Failed to reset Passkey": "Échec de la réinitialisation de la Passkey",
"Failed to reset usage": "Échec de la réinitialisation de lutilisation",
"Failed to save": "Échec de la sauvegarde",
"Failed to save announcements": "Échec de la sauvegarde des annonces",
"Failed to save API info": "Échec de l'enregistrement des informations API",
@@ -1962,6 +1973,7 @@
"gpt-4": "gpt-4",
"gpt-4, claude-3-opus, etc.": "gpt-4, claude-3-opus, etc.",
"GPU count": "Nombre de GPU",
"Granted at": "Accordé le",
"Greater than": "Supérieur à",
"Greater Than": "Supérieur à",
"Greater than or equal": "Supérieur ou égal",
@@ -2726,6 +2738,8 @@
"No related models available for this channel type": "Aucun modèle associé disponible pour ce type de canal",
"No release notes provided.": "Aucune note de version fournie.",
"No Reset": "Pas de réinitialisation",
"No reset credits": "Aucun crédit de réinitialisation",
"No reset credits available": "Aucun crédit de réinitialisation disponible",
"No restriction": "Aucune restriction",
"No results for \"{{query}}\". Try adjusting your search or filters.": "Aucun résultat pour \"{{query}}\". Essayez d'ajuster votre recherche ou vos filtres.",
"No results found": "Aucun résultat trouvé",
@@ -2915,6 +2929,7 @@
"Output token price for generated tokens.": "Prix des tokens de sortie générés.",
"Output tokens": "Jetons de sortie",
"Output Tokens": "Tokens de sortie",
"Overage limited": "Dépassement limité",
"overall": "global",
"Overnight range": "Plage nocturne",
"override": "remplacer",
@@ -3346,6 +3361,8 @@
"Recursive": "Récursif",
"Redeem": "Utiliser",
"Redeem codes": "Échanger des codes",
"Redeemed": "Utilisé",
"Redeemed at": "Utilisé le",
"Redeemed By": "Utilisé par",
"Redeemed:": "Utilisé :",
"redemption code": "code d'échange",
@@ -3373,6 +3390,7 @@
"Refresh": "Actualiser",
"Refresh Cache": "Actualiser le cache",
"Refresh credential": "Actualiser l'identifiant",
"Refresh details": "Actualiser les détails",
"Refresh failed": "Échec de l'actualisation",
"Refresh interval (minutes)": "Intervalle d'actualisation (minutes)",
"Refresh Stats": "Actualiser les statistiques",
@@ -3491,6 +3509,11 @@
"Reset all settings to default values": "Réinitialiser tous les paramètres aux valeurs par défaut",
"Reset at:": "Réinitialisation à :",
"Reset balance and used quota": "Réinitialiser le solde et le quota utilisé",
"Reset completed": "Réinitialisation terminée",
"Reset completed. Latest usage has been refreshed.": "Réinitialisation terminée. La dernière utilisation a été actualisée.",
"Reset count:": "Nombre de réinitialisations :",
"Reset Credit": "Crédit de réinitialisation",
"Reset Credits": "Crédits de réinitialisation",
"Reset Cycle": "Cycle de réinitialisation",
"Reset email sent, please check your inbox": "Email de réinitialisation envoyé, veuillez vérifier votre boîte de réception",
"Reset failed": "Échec de la réinitialisation",
@@ -3506,7 +3529,9 @@
"Reset to Default": "Réinitialiser par défaut",
"Reset to default configuration": "Réinitialisé à la configuration par défaut",
"Reset Two-Factor Authentication": "Réinitialiser 2FA",
"Reset usage window": "Réinitialiser la fenêtre dutilisation",
"Resets in:": "Réinitialise dans :",
"Resetting...": "Réinitialisation...",
"Resolve Conflicts": "Résoudre les conflits",
"Resource Configuration": "Configuration des ressources",
"Response": "Réponse",
@@ -3872,6 +3897,7 @@
"Special ratios override the token group ratio for specific user group and token group combinations.": "Les ratios spéciaux remplacent le ratio du groupe de jeton pour des combinaisons précises de groupe utilisateur et de groupe de jeton.",
"Special usable group rules": "Règles spéciales de groupes utilisables",
"Special usable group rules can add, remove, or append selectable token groups for a specific user group.": "Les règles de groupes utilisables spéciaux peuvent ajouter, supprimer ou annexer des groupes de jetons sélectionnables pour un groupe utilisateur précis.",
"Spend limited": "Dépenses limitées",
"SQLite stores all data in a single file. Make sure that file is persisted when running in containers.": "SQLite stocke toutes les données dans un seul fichier. Assurez-vous que ce fichier est persisté lors de l'exécution dans des conteneurs.",
"SSRF Protection": "Protection SSRF",
"Standard": "Standard",
@@ -4088,6 +4114,7 @@
"The name displayed across the application": "Le nom affiché dans l'application",
"The public URL of your server, used for OAuth callbacks, webhooks, and other external integrations": "L'URL publique de votre serveur, utilisée pour les rappels OAuth, les webhooks et autres intégrations externes",
"The requested chat preset does not exist or has been removed.": "Le préréglage de discussion demandé n'existe pas ou a été supprimé.",
"The reset request stays disabled until a credit is available.": "La demande de réinitialisation reste désactivée tant quaucun crédit nest disponible.",
"The setup wizard will use this database during initialization.": "L'assistant de configuration utilisera cette base de données lors de l'initialisation.",
"The site is not available at the moment.": "Le site n'est pas disponible pour le moment.",
"The slug is appended to the URL:": "Le slug est ajouté à l'URL :",
@@ -4402,6 +4429,7 @@
"Upload photo": "Téléverser une photo",
"Upscale": "Agrandir",
"Upstream": "Amont",
"Upstream did not return reset credit details.": "L'amont n'a renvoyé aucun détail de crédit de réinitialisation.",
"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",
@@ -4447,6 +4475,8 @@
"Use backup code": "Utiliser un code de secours",
"Use disk cache when request body exceeds this size": "Utiliser le cache disque quand le corps de requête dépasse cette taille",
"Use external tools to extend capabilities": "Utiliser des outils externes pour étendre les capacités",
"Use one available reset credit for this channel. The reset request is sent only after confirmation.": "Utilise un crédit de réinitialisation disponible pour ce canal. La demande nest envoyée quaprès confirmation.",
"Use one available reset credit to refresh the current Codex usage windows.": "Utilise un crédit de réinitialisation disponible pour actualiser les fenêtres dutilisation Codex actuelles.",
"Use our unified OpenAI-compatible endpoint in your applications": "Utilisez notre point de terminaison unifié compatible OpenAI dans vos applications",
"Use Passkey to sign in without entering your password.": "Utilisez une clé d'accès (Passkey) pour vous connecter sans saisir votre mot de passe.",
"Use presets or upstream discovery to populate the model list faster.": "Utilisez des préréglages ou la découverte en amont pour remplir plus vite la liste des modèles.",
@@ -4464,6 +4494,7 @@
"Used for load balancing. Higher weight = more requests": "Utilisé pour l'équilibrage de charge. Poids plus élevé = plus de requêtes",
"Used in URLs and API routes": "Utilisé dans les URLs et les routes API",
"Used Quota": "Quota utilisé",
"Used reset credits cannot be restored.": "Les crédits de réinitialisation utilisés ne peuvent pas être restaurés.",
"Used to authenticate with io.net deployment API": "Utilisée pour l'authentification auprès de l'API de déploiement io.net",
"Used to authenticate with the worker. Leave blank to keep the existing secret.": "Utilisé pour l'authentification auprès du worker. Laissez vide pour conserver le secret existant.",
"Used to decide the payment flow. Built-in keys include stripe for Stripe and waffo_pancake for Waffo Pancake; other values are sent to Epay as the type parameter.": "Détermine le flux de paiement utilisé au clic. Les clés intégrées incluent stripe pour Stripe et waffo_pancake pour Waffo Pancake ; les autres valeurs sont envoyées à Epay comme paramètre type.",
@@ -4555,6 +4586,7 @@
"View detailed information about this user including balance, usage statistics, and invitation details.": "Afficher des informations détaillées sur cet utilisateur, y compris le solde, les statistiques d'utilisation et les détails d'invitation.",
"View details": "Voir les détails",
"View document": "Afficher le document",
"View issued reset credits, grant dates, and expiration.": "Voir les crédits de réinitialisation émis, les dates d'attribution et d'expiration.",
"View logs": "Voir les logs",
"View mode": "Mode d'affichage",
"View model statistics and charts": "Afficher les statistiques et graphiques des modèles",