diff --git a/frontend/src/i18n/locales/en.ts b/frontend/src/i18n/locales/en.ts index ad916a6571..2a53845cd3 100644 --- a/frontend/src/i18n/locales/en.ts +++ b/frontend/src/i18n/locales/en.ts @@ -949,15 +949,27 @@ export default { title: 'Admin Dashboard', description: 'System overview and real-time statistics', apiKeys: 'API Keys', + totalApiKeys: 'Total API Keys', + activeApiKeys: 'Active API Keys', accounts: 'Accounts', + totalAccounts: 'Total Accounts', + activeAccounts: 'Active Accounts', users: 'Users', + totalUsers: 'Total Users', todayRequests: 'Today Requests', + totalRequests: 'Total Requests', newUsersToday: 'New Users Today', + todayCost: 'Today Cost', + totalCost: 'Total Cost', todayTokens: 'Today Tokens', totalTokens: 'Total Tokens', + input: 'Input', + output: 'Output', cacheToday: 'Cache (Today)', + cache: 'Cache', performance: 'Performance', avgResponse: 'Avg Response', + averageTime: 'Average Time', active: 'active', ok: 'ok', err: 'err', @@ -994,6 +1006,17 @@ export default { spendShort: 'Spend', requestsShort: 'Req', tokensShort: 'Tok', + last7Days: 'Last 7 Days', + noUsageRecords: 'No usage records', + startUsingApi: 'Start using the API to see your usage history here.', + viewAllUsage: 'View All', + quickActions: 'Quick Actions', + manageUsers: 'Manage Users', + viewUserAccounts: 'View and manage user accounts', + manageAccounts: 'Manage Accounts', + configureAiAccounts: 'Configure AI platform accounts', + systemSettings: 'System Settings', + configureSystem: 'Configure system settings', failedToLoad: 'Failed to load dashboard statistics' }, @@ -1294,9 +1317,14 @@ export default { createUser: 'Create User', editUser: 'Edit User', deleteUser: 'Delete User', + deleteConfirmMessage: "Are you sure you want to delete user '{email}'? This action cannot be undone.", searchUsers: 'Search by email, username, notes, or API key...', + searchPlaceholder: 'Search by email, username, notes, or API key...', + roleFilter: 'Filter by Role', + statusFilter: 'Filter by Status', allRoles: 'All Roles', allStatus: 'All Status', + allStatuses: 'All Statuses', allGroups: 'All Groups', searchGroups: 'Search groups...', fuzzySearch: 'Fuzzy search', @@ -1318,6 +1346,38 @@ export default { copyPassword: 'Copy password', creating: 'Creating...', updating: 'Updating...', + form: { + emailLabel: 'Email', + emailPlaceholder: 'Enter email', + usernameLabel: 'Username', + usernamePlaceholder: 'Enter username (optional)', + notesLabel: 'Notes', + notesPlaceholder: 'Enter notes (admin only)', + notesHint: 'This note is only visible to administrators', + passwordLabel: 'Password', + passwordPlaceholder: 'Enter password (leave empty to keep)', + roleLabel: 'Role', + selectRole: 'Select role', + balanceLabel: 'Balance', + concurrencyLabel: 'Concurrency', + statusLabel: 'Status', + selectStatus: 'Select status' + }, + adjustBalance: 'Adjust Balance', + adjustConcurrency: 'Adjust Concurrency', + adjustmentAmount: 'Adjustment Amount', + adjustmentAmountHint: 'Positive to add, negative to subtract', + currentConcurrency: 'Current Concurrency', + saving: 'Saving...', + noUsers: 'No users', + noUsersDescription: 'Create your first user to get started.', + userCreatedSuccess: 'User created successfully', + userUpdatedSuccess: 'User updated successfully', + userDeletedSuccess: 'User deleted successfully', + balanceAdjustedSuccess: 'Balance adjusted successfully', + concurrencyAdjustedSuccess: 'Concurrency adjusted successfully', + failedToSave: 'Failed to save user', + failedToAdjust: 'Failed to adjust', columns: { user: 'User', email: 'Email', @@ -1529,7 +1589,10 @@ export default { name: 'Name', platform: 'Platform', rateMultiplier: 'Rate Multiplier', + exclusive: 'Exclusive', type: 'Type', + priority: 'Priority', + apiKeys: 'API Key Count', accounts: 'Accounts', capacity: 'Capacity', usage: 'Usage', @@ -1541,6 +1604,11 @@ export default { userNotes: 'Notes', userStatus: 'Status' }, + exclusiveFilter: 'Exclusive', + exclusiveObj: { + yes: 'Yes', + no: 'No' + }, usageToday: 'Today', usageTotal: 'Total', accountsAvailable: 'Avail:', @@ -1555,7 +1623,22 @@ export default { platform: 'Platform', rateMultiplier: 'Rate Multiplier', status: 'Status', - exclusive: 'Exclusive Group' + exclusive: 'Exclusive Group', + nameLabel: 'Group Name', + namePlaceholder: 'Enter group name', + descriptionLabel: 'Description', + descriptionPlaceholder: 'Enter description (optional)', + rateMultiplierLabel: 'Rate Multiplier', + rateMultiplierHint: '1.0 = standard rate, 0.5 = half price, 2.0 = double', + exclusiveLabel: 'Exclusive Group', + exclusiveHint: 'Exclusive group, can be manually assigned to users', + platformLabel: 'Platform Restriction', + platformPlaceholder: 'Select platform (empty for no restriction)', + accountsLabel: 'Assigned Accounts', + accountsPlaceholder: 'Select accounts (empty for no restriction)', + priorityLabel: 'Priority', + priorityHint: 'Lower value means higher priority, used for account scheduling', + statusLabel: 'Status' }, enterGroupName: 'Enter group name', optionalDescription: 'Optional description', @@ -1579,10 +1662,17 @@ export default { groupCreated: 'Group created successfully', groupUpdated: 'Group updated successfully', groupDeleted: 'Group deleted successfully', + saving: 'Saving...', + noGroups: 'No groups', + noGroupsDescription: 'Create groups to better manage API keys and rates.', + groupCreatedSuccess: 'Group created successfully', + groupUpdatedSuccess: 'Group updated successfully', + groupDeletedSuccess: 'Group deleted successfully', failedToLoad: 'Failed to load groups', failedToCreate: 'Failed to create group', failedToUpdate: 'Failed to update group', failedToDelete: 'Failed to delete group', + failedToSave: 'Failed to save group', nameRequired: 'Please enter group name', rateMultipliers: 'Rate Multipliers', rateMultipliersTitle: 'Group Rate Multipliers', @@ -1898,6 +1988,9 @@ export default { crsBack: 'Back', editAccount: 'Edit Account', deleteAccount: 'Delete Account', + deleteConfirmMessage: "Are you sure you want to delete account '{name}'?", + refreshCookie: 'Refresh Cookie', + testAccount: 'Test Account', searchAccounts: 'Search accounts...', notes: 'Notes', notesPlaceholder: 'Enter notes', @@ -1938,8 +2031,42 @@ export default { soraBaseUrlRequired: 'Sora API Key account requires a Base URL', soraBaseUrlInvalidScheme: 'Base URL must start with http:// or https://', upstream: 'Upstream', - upstreamDesc: 'Connect via Base URL + API Key' + upstreamDesc: 'Connect via Base URL + API Key', + api_key: 'API Key', + cookie: 'Cookie' }, + form: { + nameLabel: 'Account Name', + namePlaceholder: 'Enter account name', + platformLabel: 'Platform', + selectPlatform: 'Select platform', + typeLabel: 'Type', + selectType: 'Select type', + credentialsLabel: 'Credentials', + credentialsPlaceholder: 'Enter Cookie or API Key', + priorityLabel: 'Priority', + priorityHint: 'Lower value means higher priority', + weightLabel: 'Weight', + weightHint: 'Weight value for load balancing', + statusLabel: 'Status' + }, + filters: { + platform: 'Platform', + allPlatforms: 'All Platforms', + type: 'Type', + allTypes: 'All Types', + status: 'Status', + allStatuses: 'All Statuses' + }, + saving: 'Saving...', + refreshing: 'Refreshing...', + noAccounts: 'No accounts', + noAccountsDescription: 'Add AI platform accounts to start using the API gateway.', + accountCreatedSuccess: 'Account created successfully', + accountUpdatedSuccess: 'Account updated successfully', + accountDeletedSuccess: 'Account deleted successfully', + cookieRefreshedSuccess: 'Cookie refreshed successfully', + failedToSave: 'Failed to save account', status: { active: 'Active', inactive: 'Inactive', @@ -3308,6 +3435,7 @@ export default { lastRun: 'last_run:', lastSuccess: 'last_success:', lastError: 'last_error:', + result: 'Result', noData: 'No data.', loadingText: 'loading', ready: 'ready', @@ -3382,7 +3510,8 @@ export default { '6h': 'Last 6 hours', '24h': 'Last 24 hours', '7d': 'Last 7 days', - '30d': 'Last 30 days' + '30d': 'Last 30 days', + custom: 'Custom' }, openaiTokenStats: { title: 'OpenAI Token Request Stats', @@ -3404,6 +3533,10 @@ export default { requestsWithFirstToken: 'Requests With First Token' } }, + customTimeRange: { + startTime: 'Start Time', + endTime: 'End Time' + }, fullscreen: { enter: 'Enter Fullscreen' },