perf(web): streamline table actions and destructive dialogs (#5645)
* perf(data-table): autosize action columns - exclude actions columns from shared table width calculations so action cells size to their content. - remove fixed size and w-* width overrides from feature action columns to preserve content-based layout. * perf(data-table): streamline row action controls - expose common edit and status actions directly while moving secondary actions into overflow menus. - add shared row action menu helpers so static and table rows use consistent action controls. - let action columns size to their content instead of relying on fixed widths. * fix(web): localize destructive dialog copy - route delete, reset, and batch update confirmation text through i18n. - add locale entries for affected channel, model, system settings, and user dialogs. * perf(web): unify destructive dialog actions - align delete and cleanup confirmation buttons with the shared destructive variant. - replace custom destructive color overrides with semantic button variants. - clean up lint errors in touched dialog files before committing. * fix(web): add user action success translations - add localized success messages for user delete, status, and role changes. - keep user management toast copy available across all frontend locales. * fix(data-table): prevent mobile badge clipping - expose badge cell slots so mobile card styles can target nested badge wrappers. - reset badge margins in card rows to keep provider icons fully visible on small screens.
This commit is contained in:
Vendored
+24
@@ -24,6 +24,8 @@
|
||||
"{\"original-model\": \"replacement-model\"}": "{\"original-model\": \"replacement-model\"}",
|
||||
"{{category}} Models": "Modèles {{category}}",
|
||||
"{{completed}}/{{total}} completed": "{{completed}}/{{total}} terminé(s)",
|
||||
"{{count}} announcements will be removed from the list.": "{{count}} annonces seront retirées de la liste.",
|
||||
"{{count}} API shortcuts will be removed from the list.": "{{count}} raccourcis API seront retirés de la liste.",
|
||||
"{{count}} channel(s) deleted": "{{count}} canal(canaux) supprimé(s)",
|
||||
"{{count}} channel(s) disabled": "{{count}} canal(canaux) désactivé(s)",
|
||||
"{{count}} channel(s) enabled": "{{count}} canal(canaux) activé(s)",
|
||||
@@ -32,6 +34,7 @@
|
||||
"{{count}} days ago": "il y a {{count}} jours",
|
||||
"{{count}} days remaining": "{{count}} days remaining",
|
||||
"{{count}} disabled channel(s) deleted": "{{count}} canal(canaux) désactivé(s) supprimé(s)",
|
||||
"{{count}} FAQ entries will be removed from the list.": "{{count}} entrées de FAQ seront retirées de la liste.",
|
||||
"{{count}} hours ago": "il y a {{count}} heures",
|
||||
"{{count}} incidents": "{{count}} incidents",
|
||||
"{{count}} incidents in the last 24 hours": "{{count}} incidents au cours des dernières 24 heures",
|
||||
@@ -44,6 +47,7 @@
|
||||
"{{count}} override": "{{count}} remplacement",
|
||||
"{{count}} selected targets available for bulk copy.": "{{count}} cibles sélectionnées disponibles pour la copie en lot.",
|
||||
"{{count}} tiers": "{{count}} paliers",
|
||||
"{{count}} Uptime Kuma groups will be removed from the list.": "{{count}} groupes Uptime Kuma seront retirés de la liste.",
|
||||
"{{count}} vendors": "{{count}} fournisseurs",
|
||||
"{{count}} weeks ago": "il y a {{count}} semaines",
|
||||
"{{field}} updated to {{value}}": "{{field}} mis à jour en {{value}}",
|
||||
@@ -414,7 +418,10 @@
|
||||
"Are you sure you want to delete": "Êtes-vous sûr de vouloir supprimer",
|
||||
"Are you sure you want to delete {{count}} model(s)? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer {{count}} modèle(s) ? Cette action ne peut pas être annulée.",
|
||||
"Are you sure you want to delete all auto-disabled keys? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer toutes les clés automatiquement désactivées ? Cette action ne peut pas être annulée.",
|
||||
"Are you sure you want to delete channel \"{{name}}\"? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer le canal \"{{name}}\" ? Cette action ne peut pas être annulée.",
|
||||
"Are you sure you want to delete deployment \"{{name}}\"? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer le déploiement \"{{name}}\" ? Cette action est irréversible.",
|
||||
"Are you sure you want to delete group \"{{name}}\"? This action cannot be undone.": "Voulez-vous vraiment supprimer le groupe \"{{name}}\" ? Cette action est irréversible.",
|
||||
"Are you sure you want to delete model \"{{name}}\"? This action cannot be undone.": "Voulez-vous vraiment supprimer le modèle \"{{name}}\" ? Cette action est irréversible.",
|
||||
"Are you sure you want to delete this key? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer cette clé ? Cette action ne peut pas être annulée.",
|
||||
"Are you sure you want to disable all enabled keys?": "Êtes-vous sûr de vouloir désactiver toutes les clés activées ?",
|
||||
"Are you sure you want to enable all keys?": "Êtes-vous sûr de vouloir activer toutes les clés ?",
|
||||
@@ -1237,6 +1244,7 @@
|
||||
"Delete selected channels": "Supprimer les canaux sélectionnés",
|
||||
"Delete selected models": "Supprimer les modèles sélectionnés",
|
||||
"Deleted": "Supprimé",
|
||||
"Deleted \"{{name}}\"": "\"{{name}}\" supprimé",
|
||||
"Deleted ({{id}})": "Supprimé ({{id}})",
|
||||
"Deleted {{count}} failed models": "{{count}} modèles en échec supprimés",
|
||||
"Deleted a custom OAuth provider": "Fournisseur OAuth personnalisé supprimé",
|
||||
@@ -1443,6 +1451,7 @@
|
||||
"Edit chat preset": "Modifier le préréglage de chat",
|
||||
"Edit discount tier": "Modifier le palier de remise",
|
||||
"Edit FAQ": "Modifier la FAQ",
|
||||
"Edit group": "Modifier le groupe",
|
||||
"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.",
|
||||
@@ -1718,6 +1727,7 @@
|
||||
"Failed to delete channel": "Échec de la suppression du canal",
|
||||
"Failed to delete disabled channels": "Échec de la suppression des canaux désactivés",
|
||||
"Failed to delete failed models": "Échec de la suppression des modèles en échec",
|
||||
"Failed to delete group": "Échec de la suppression du groupe",
|
||||
"Failed to delete invalid redemption codes": "Échec de la suppression des codes d'échange invalides",
|
||||
"Failed to delete model": "Échec de la suppression du modèle",
|
||||
"Failed to delete provider": "Échec de la suppression du fournisseur",
|
||||
@@ -3595,6 +3605,7 @@
|
||||
"Resend ({{seconds}}s)": "Renvoyer ({{seconds}}s)",
|
||||
"Reset": "Réinitialiser",
|
||||
"Reset 2FA": "Réinitialiser la 2FA",
|
||||
"Reset 2FA for {{username}}? The user must set up 2FA again to continue using it.": "Réinitialiser la 2FA de {{username}} ? L’utilisateur devra configurer à nouveau la 2FA pour continuer à l’utiliser.",
|
||||
"Reset all model prices?": "Réinitialiser tous les prix des modèles ?",
|
||||
"Reset all model ratios?": "Réinitialiser tous les ratios de modèle ?",
|
||||
"Reset all settings to default values": "Réinitialiser tous les paramètres aux valeurs par défaut",
|
||||
@@ -3610,6 +3621,7 @@
|
||||
"Reset failed": "Échec de la réinitialisation",
|
||||
"Reset model ratios": "Ratios de modèle réinitialisés",
|
||||
"Reset Passkey": "Réinitialiser le Passkey",
|
||||
"Reset Passkey for {{username}}? The user will need to register a new Passkey before using passwordless login.": "Réinitialiser la Passkey de {{username}} ? L’utilisateur devra enregistrer une nouvelle Passkey avant d’utiliser la connexion sans mot de passe.",
|
||||
"Reset password": "Réinitialiser le mot de passe",
|
||||
"Reset Period": "Période de réinitialisation",
|
||||
"Reset prices": "Réinitialiser les prix",
|
||||
@@ -4259,6 +4271,8 @@
|
||||
"This action cannot be undone.": "Cette action est irréversible.",
|
||||
"This action cannot be undone. This will permanently delete your account and remove all your data from our servers.": "Cette action est irréversible. Cela supprimera définitivement votre compte et toutes vos données de nos serveurs.",
|
||||
"This action will permanently remove 2FA protection from your account.": "Cette action supprimera définitivement la protection 2FA de votre compte.",
|
||||
"This announcement will be removed from the list.": "Cette annonce sera retirée de la liste.",
|
||||
"This API shortcut will be removed from the list.": "Ce raccourci API sera retiré de la liste.",
|
||||
"This channel has no configured models.": "Ce canal n'a aucun modèle configuré.",
|
||||
"This channel is not an Ollama channel.": "Ce canal n'est pas un canal Ollama.",
|
||||
"This channel type does not support fetching models": "Ce type de canal ne prend pas en charge la récupération de modèles",
|
||||
@@ -4269,6 +4283,7 @@
|
||||
"This device does not support Passkey": "Cet appareil ne prend pas en charge Passkey",
|
||||
"This device does not support Passkey verification.": "Cet appareil ne prend pas en charge la vérification par clé d'accès.",
|
||||
"This expression is too complex for the visual editor. Please switch to expression mode to edit.": "Cette expression est trop complexe pour l'éditeur visuel. Passez en mode expression pour la modifier.",
|
||||
"This FAQ entry will be removed from the list.": "Cette entrée de FAQ sera retirée de la liste.",
|
||||
"This feature is experimental. Configuration format and behavior may change.": "Cette fonctionnalité est expérimentale. Le format de configuration et le comportement peuvent changer.",
|
||||
"This feature requires server-side WeChat configuration": "Cette fonctionnalité nécessite une configuration WeChat côté serveur",
|
||||
"This identifier is sent to the payment backend when creating an order. Use alipay for Alipay, wxpay for WeChat Pay, stripe for Stripe. Custom values must be supported by your payment provider.": "Cet identifiant est envoyé au backend de paiement lors de la création d’une commande. Utilisez alipay pour Alipay, wxpay pour WeChat Pay, stripe pour Stripe. Les valeurs personnalisées doivent être prises en charge par votre fournisseur de paiement.",
|
||||
@@ -4288,6 +4303,7 @@
|
||||
"This site currently has {{count}} models enabled": "Ce site compte actuellement {{count}} modèles activés",
|
||||
"This tier catches any request that did not match earlier tiers.": "Ce palier récupère toute requête qui ne correspond à aucun palier précédent.",
|
||||
"this token group": "ce groupe de jetons",
|
||||
"This Uptime Kuma group will be removed from the list.": "Ce groupe Uptime Kuma sera retiré de la liste.",
|
||||
"this user group": "ce groupe d'utilisateurs",
|
||||
"This user has no bindings": "Cet utilisateur n'a aucune liaison",
|
||||
"This week": "Cette semaine",
|
||||
@@ -4297,11 +4313,14 @@
|
||||
"This will delete all channel affinity cache entries still in memory.": "Cela supprimera toutes les entrées de cache d'affinité de canal encore en mémoire.",
|
||||
"This will delete temporary cache files that have not been used for more than 10 minutes": "Cela supprimera les fichiers de cache temporaires inutilisés depuis plus de 10 minutes",
|
||||
"This will extend the deployment by the specified hours.": "Cela prolongera le déploiement du nombre d'heures spécifié.",
|
||||
"This will permanently delete all manually and automatically disabled channels. This action cannot be undone.": "Cela supprimera définitivement tous les canaux désactivés manuellement et automatiquement. Cette action ne peut pas être annulée.",
|
||||
"This will permanently delete API key": "Cela supprimera définitivement la clé API",
|
||||
"This will permanently delete redemption code": "Cela supprimera définitivement le code d'échange",
|
||||
"This will permanently delete user": "Cela supprimera définitivement l'utilisateur",
|
||||
"This will permanently remove all log entries created before {{date}}.": "Cela supprimera définitivement toutes les entrées de journal créées avant le {{date}}.",
|
||||
"This will permanently remove log entries before the selected timestamp.": "Cela supprimera définitivement les entrées de journal antérieures à l'horodatage sélectionné.",
|
||||
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?": "La priorité de tous les {{count}} canaux avec le tag \"{{tag}}\" sera mise à jour à {{value}}. Continuer ?",
|
||||
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?": "Le poids de tous les {{count}} canaux avec le tag \"{{tag}}\" sera mis à jour à {{value}}. Continuer ?",
|
||||
"This year": "Cette année",
|
||||
"Three steps to get started": "Trois étapes pour commencer",
|
||||
"Throughput": "Débit",
|
||||
@@ -4638,6 +4657,10 @@
|
||||
"User Consumption Trend": "Tendance de consommation",
|
||||
"User created successfully": "Utilisateur créé avec succès",
|
||||
"User dashboard and quota controls.": "Tableau de bord utilisateur et contrôles de quotas.",
|
||||
"User deleted successfully": "Utilisateur supprimé avec succès",
|
||||
"User demoted to regular user successfully": "Utilisateur rétrogradé en utilisateur standard avec succès",
|
||||
"User disabled successfully": "Utilisateur désactivé avec succès",
|
||||
"User enabled successfully": "Utilisateur activé avec succès",
|
||||
"User Exclusive Ratio": "Ratio exclusif utilisateur",
|
||||
"User group": "Groupe utilisateur",
|
||||
"User Group": "Groupe d'utilisateurs",
|
||||
@@ -4653,6 +4676,7 @@
|
||||
"User Information": "Informations utilisateur",
|
||||
"User Menu": "Menu utilisateur",
|
||||
"User personal functions": "Fonctions personnelles de l'utilisateur",
|
||||
"User promoted to admin successfully": "Utilisateur promu administrateur avec succès",
|
||||
"User selectable": "Sélectionnable par l'utilisateur",
|
||||
"User Subscription Management": "Gestion des abonnements utilisateur",
|
||||
"User updated successfully": "Utilisateur mis à jour avec succès",
|
||||
|
||||
Reference in New Issue
Block a user