| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953 |
- {
- "actions": {
- "copy": "Copy",
- "download": "Download",
- "copied": "Copied"
- },
- "title": {
- "costRanking": "Cost Leaderboard",
- "costRankingDescription": "View user cost rankings, data updates every 5 minutes",
- "usageLogs": "Usage Logs",
- "usageLogsDescription": "View API call logs and usage statistics",
- "clients": "Clients",
- "userAndKeyManagement": "User and Key Management",
- "requestMessages": "Request Messages",
- "activeSessions": "Active Sessions (Last 5 Minutes)",
- "sessionMonitoring": "Session Monitoring",
- "sessionMonitoringDescription": "Real-time display of active and inactive sessions (auto-refresh every 3 seconds)",
- "inactiveSessions": "Inactive Sessions (Over 5 Minutes, View Only)",
- "quotasManagement": "Quotas",
- "quotasManagementDescription": "View and manage quotas at all levels",
- "usersQuotas": "User Quota Statistics",
- "keysQuotas": "Key Quota Statistics",
- "providersQuotas": "Provider Quota Statistics",
- "filterCriteria": "Filter Criteria",
- "filterCriteriaDescription": "Narrow down logs by time, user, provider, and more"
- },
- "description": {
- "viewApiCallLogs": "View API call logs and usage statistics",
- "dashboard": "View system statistics and monitoring information",
- "quotas": "View and manage quotas at all levels",
- "clientInfo": "User-Agent request header",
- "requestMessagesDescription": "Message content sent by the client",
- "responseBodyDescription": "Complete server response (5-minute TTL)"
- },
- "overview": {
- "title": "Overview",
- "totalRequests": "Total Requests",
- "totalCost": "Total Cost",
- "totalUsers": "Total Users",
- "totalProviders": "Total Providers",
- "activeUsers": "Active Users",
- "activeSessions": "Active Sessions",
- "errorRate": "Error Rate",
- "avgResponseTime": "Average Response Time"
- },
- "stats": {
- "title": "Statistics",
- "requests": "Requests",
- "cost": "Cost",
- "tokens": "Tokens",
- "period": {
- "hour": "Last Hour",
- "day": "Today",
- "week": "This Week",
- "month": "This Month"
- }
- },
- "logs": {
- "title": "Usage Logs",
- "description": "View and analyze API call records",
- "filters": {
- "user": "User",
- "provider": "Provider",
- "sessionId": "Session ID",
- "searchUser": "Search users...",
- "searchProvider": "Search providers...",
- "searchSessionId": "Search session IDs...",
- "noUserFound": "No matching users found",
- "noProviderFound": "No matching providers found",
- "noSessionFound": "No matching session IDs found",
- "model": "Model",
- "endpoint": "Endpoint",
- "status": "Status",
- "timeRange": "Time Range",
- "dateRange": "Date Range",
- "startTime": "Start Time",
- "endTime": "End Time",
- "allUsers": "All Users",
- "allKeys": "All Keys",
- "selectUserFirst": "Please select a user first",
- "allProviders": "All Providers",
- "allModels": "All Models",
- "allEndpoints": "All Endpoints",
- "allStatusCodes": "All Status Codes",
- "apiKey": "API Key",
- "statusCode": "Status Code",
- "minRetryCount": "Retry Count ≥",
- "minRetryCountPlaceholder": "Enter minimum retries",
- "apply": "Apply Filter",
- "reset": "Reset",
- "last7days": "7d",
- "last30days": "30d",
- "customRange": "Custom Range",
- "export": "Export",
- "exporting": "Exporting...",
- "exportSuccess": "Export completed successfully",
- "exportError": "Export failed",
- "quickFilters": {
- "today": "Today",
- "thisWeek": "This Week",
- "errorsOnly": "Errors Only",
- "showRetries": "With Retries"
- },
- "activeFilters": {
- "title": "Active Filters",
- "remove": "Remove filter",
- "clearAll": "Clear all"
- },
- "groups": {
- "time": "Time Range",
- "timeDesc": "Filter by date and time",
- "identity": "Identity",
- "identityDesc": "Filter by user and key",
- "request": "Request",
- "requestDesc": "Filter by provider, model, endpoint",
- "status": "Status",
- "statusDesc": "Filter by status code and retry"
- }
- },
- "columns": {
- "time": "Time",
- "user": "User",
- "key": "Key",
- "sessionId": "Session ID",
- "provider": "Provider",
- "model": "Billing Model",
- "endpoint": "Endpoint",
- "inputTokens": "Input",
- "outputTokens": "Output",
- "tokens": "Tokens",
- "cacheWrite": "Cache Write",
- "cacheRead": "Cache Read",
- "cache": "Cache",
- "cost": "Cost",
- "duration": "Duration",
- "performance": "Perf",
- "status": "Status"
- },
- "stats": {
- "title": "Statistics Summary",
- "description": "Aggregated statistics for the current filters",
- "totalRequests": "Total Requests",
- "totalAmount": "Total Consumption",
- "totalTokens": "Total Tokens",
- "cacheTokens": "Cached Tokens",
- "input": "Input",
- "output": "Output",
- "write": "Write",
- "read": "Read",
- "loading": "Loading..."
- },
- "table": {
- "noData": "No Data",
- "pagination": "Total {total} records, Page {page} / {totalPages}",
- "prevPage": "Previous Page",
- "nextPage": "Next Page",
- "blocked": "Blocked",
- "nonBilling": "Non-Billing",
- "skipped": "Skipped",
- "specialSettings": "Special",
- "times": "times",
- "loadedCount": "Loaded {count} records",
- "loadingMore": "Loading more...",
- "noMoreData": "All records loaded",
- "scrollToTop": "Back to top",
- "hideProviderColumn": "Hide Provider Column",
- "showProviderColumn": "Show Provider Column",
- "columnVisibility": "Column Visibility"
- },
- "actions": {
- "refresh": "Refresh",
- "refreshing": "Refreshing...",
- "stopAutoRefresh": "Stop Auto-Refresh",
- "startAutoRefresh": "Start Auto-Refresh",
- "view": "View",
- "fullscreen": "Fullscreen",
- "exitFullscreen": "Exit Fullscreen"
- },
- "error": {
- "loadFailed": "Load Failed",
- "loadKeysFailed": "Failed to load keys"
- },
- "details": {
- "title": "Request Details",
- "statusTitle": "Status: {status}",
- "inProgress": "In Progress",
- "unknown": "Unknown",
- "success": "Request completed successfully",
- "error": "Request failed, here are the detailed error messages and provider decision chain",
- "processing": "Request is in progress, not yet completed",
- "tabs": {
- "summary": "Summary",
- "logicTrace": "Logic Trace",
- "performance": "Performance",
- "metadata": "Metadata"
- },
- "summary": {
- "keyMetrics": "Key Metrics",
- "totalCost": "Total Cost",
- "totalTokens": "Total Tokens",
- "duration": "Duration",
- "outputRate": "Output Rate",
- "viewFullError": "View full error",
- "viewSession": "View Session"
- },
- "specialSettings": {
- "title": "Special settings"
- },
- "skipped": {
- "title": "Skipped",
- "reason": "Reason",
- "warmup": "Warmup Fast Response (CCH)",
- "desc": "This request was identified as a Warmup probe and was answered directly by CCH without forwarding to upstream providers; it is not billed, not rate-limited, and excluded from statistics."
- },
- "blocked": {
- "title": "Blocking Information",
- "type": "Blocking Type",
- "sensitiveWord": "Sensitive Word Blocking",
- "word": "Sensitive Word",
- "matchType": "Match Type",
- "matchTypeContains": "Contains Match",
- "matchTypeExact": "Exact Match",
- "matchTypeRegex": "Regular Expression",
- "matchedText": "Matched Content"
- },
- "sessionId": "Session ID",
- "messagesCount": "Message Count",
- "messagesLabel": "Messages",
- "messagesUnit": "items",
- "clientInfo": "Client Info",
- "modelRedirect": {
- "title": "Model Redirection",
- "requestModel": "Requested Model",
- "actualModel": "Actual Call",
- "billing": "Billing Description",
- "billingDescription": "The system prioritizes billing based on the price of the requested model ({original}). If the model is not found in the price list, the price of the actually called model ({current}) is used.",
- "billingModel": "Billing Model",
- "actualModelTooltip": "Actual Model: {model}",
- "originalModelTooltip": "Original Model: {model}",
- "billingDescription_original": "Current billing mode: Using original model before redirection ({original}) for billing",
- "billingDescription_redirected": "Current billing mode: Using actual model after redirection ({current}) for billing",
- "billingOriginal": "billing: original",
- "billingRedirected": "billing: redirected"
- },
- "errorMessage": "Error Message",
- "fake200ForwardedNotice": "Note: For streaming requests, this failure may be detected only after the stream ends; the response content may already have been forwarded to the client.",
- "fake200DetectedReason": "Detected reason: {reason}",
- "fake200Reasons": {
- "emptyBody": "Empty response body",
- "htmlBody": "HTML document returned (likely an error page)",
- "jsonErrorNonEmpty": "JSON has a non-empty `error` field",
- "jsonErrorMessageNonEmpty": "JSON has a non-empty `error.message`",
- "jsonMessageKeywordMatch": "JSON `message` contains the word \"error\" (heuristic)",
- "unknown": "Response body indicates an error"
- },
- "statusCodeInferredBadge": "Inferred",
- "statusCodeInferredTooltip": "This status code is inferred from response body content (e.g., fake 200) and may differ from the upstream HTTP status.",
- "statusCodeInferredSuffix": "(inferred)",
- "filteredProviders": "Filtered Providers",
- "providerChain": {
- "title": "Provider Decision Chain Timeline",
- "totalDuration": "Total Duration: {duration}ms"
- },
- "noError": {
- "processing": "Request is being processed, awaiting response...",
- "success": "Request successful, no error message",
- "default": "No detailed error message available"
- },
- "clickStatusCode": "Click status code to view full timeline",
- "viewDetails": "View Details",
- "reasons": {
- "rateLimited": "Provider Cost Limit",
- "circuitOpen": "Circuit Breaker Open"
- },
- "billingDetails": {
- "title": "Billing Details",
- "input": "Input",
- "output": "Output",
- "cacheWrite5m": "Cache Write (5m)",
- "cacheWrite1h": "Cache Write (1h)",
- "cacheRead": "Cache Read",
- "cacheTtl": "Cache TTL",
- "cacheTtlSwapped": "Billing TTL (swapped)",
- "multiplier": "Provider Multiplier",
- "totalCost": "Total Cost",
- "context1m": "1M Context",
- "context1mPricing": "Input 2x >200k, Output 1.5x >200k"
- },
- "performance": {
- "title": "Performance",
- "ttfb": "TTFB",
- "duration": "Total Duration",
- "outputRate": "Output Rate"
- },
- "performanceTab": {
- "noPerformanceData": "No performance data available",
- "ttfbGauge": "Time to First Byte",
- "outputRateGauge": "Output Rate",
- "latencyBreakdown": "Latency Breakdown",
- "generationTime": "Generation Time",
- "assessment": {
- "excellent": "Excellent",
- "good": "Good",
- "warning": "Warning",
- "poor": "Poor"
- },
- "thresholds": {
- "ttfbGood": "TTFB < 1s",
- "ttfbWarning": "TTFB 1-2s",
- "ttfbPoor": "TTFB > 3s"
- }
- },
- "metadata": {
- "noMetadata": "No metadata available",
- "sessionInfo": "Session Info",
- "clientInfo": "Client Info",
- "billingInfo": "Billing Info",
- "technicalTimeline": "Technical Timeline",
- "copyTimeline": "Copy Timeline"
- },
- "logicTrace": {
- "title": "Decision Chain",
- "noDecisionData": "No decision data available",
- "providersCount": "{count} providers",
- "healthyCount": "{count} healthy",
- "initialSelection": "Initial Selection",
- "healthCheck": "Health Check",
- "prioritySelection": "Priority Selection",
- "attemptProvider": "Attempt: {provider}",
- "retryAttempt": "Retry #{number}",
- "httpStatus": "HTTP {code}{inferredSuffix}",
- "sessionReuse": "Session Reuse",
- "sessionReuseDesc": "Reusing provider from session cache",
- "sessionReuseTitle": "Session Binding",
- "sessionReuseSelection": "Session Reuse Selection",
- "sessionReuseSelectionDesc": "Provider selected from session cache",
- "sessionInfo": "Session Information",
- "sessionIdLabel": "Session ID",
- "requestSequence": "Request Sequence",
- "sessionAge": "Session Age",
- "reusedProvider": "Reused Provider",
- "executeRequest": "Execute Request",
- "cacheOptimizationHint": "Session reuse optimizes performance by maintaining provider affinity within the same conversation, reducing selection overhead and improving cache hit rates."
- }
- },
- "providerChain": {
- "decisionChain": "Provider Decision Chain",
- "clickItemForDetails": "Click a step to view details"
- },
- "modelRedirect": {
- "redirected": "Redirected",
- "targetModel": "Target Model"
- },
- "statusCodes": {
- "not200": "Non-200 (errors/blocked)",
- "200": "200 (Success)",
- "400": "400 (Bad Request)",
- "401": "401 (Unauthorized)",
- "429": "429 (Rate Limited)",
- "500": "500 (Server Error)"
- },
- "billingDetails": {
- "input": "Input",
- "output": "Output",
- "cacheWrite5m": "Cache Write (5m)",
- "cacheWrite1h": "Cache Write (1h)",
- "cacheRead": "Cache Read",
- "cacheTtl": "Cache TTL",
- "cacheTtlSwapped": "Billing TTL (swapped)",
- "multiplier": "Provider Multiplier",
- "totalCost": "Total Cost",
- "context1m": "1M Context",
- "context1mPricing": "Input 2x >200k, Output 1.5x >200k"
- }
- },
- "leaderboard": {
- "title": "Cost Leaderboard",
- "description": "View cost statistics rankings for users and keys",
- "todayTitle": "Today's Leaderboard",
- "viewAll": "View All",
- "userRankings": "User Rankings",
- "providerRankings": "Provider Rankings",
- "modelRankings": "Model Rankings",
- "noData": "No data for today",
- "requests": "requests",
- "tokens": "tokens",
- "tabs": {
- "users": "User Rankings",
- "keys": "Key Rankings",
- "userRanking": "User Rankings",
- "providerRanking": "Provider Rankings",
- "providerCacheHitRateRanking": "Provider Cache Hit Rate",
- "modelRanking": "Model Rankings",
- "dailyRanking": "Today",
- "weeklyRanking": "This Week",
- "monthlyRanking": "This Month",
- "allTimeRanking": "All Time"
- },
- "dateRange": {
- "to": "to",
- "prevPeriod": "Previous period",
- "nextPeriod": "Next period",
- "customRange": "Custom date range"
- },
- "columns": {
- "rank": "Rank",
- "name": "Name",
- "totalCost": "Total Cost",
- "totalRequests": "Total Requests",
- "avgCost": "Average Cost",
- "lastActive": "Last Active",
- "user": "User",
- "requests": "Requests",
- "tokens": "Tokens",
- "consumedAmount": "Consumed Amount",
- "provider": "Provider",
- "model": "Model",
- "cost": "Cost",
- "cacheHitRequests": "Cache-eligible Requests",
- "cacheHitRate": "Cache Hit Rate",
- "cacheReadTokens": "Cache Read Tokens",
- "totalTokens": "Total Tokens",
- "cacheCreationConsumedAmount": "Cache Creation Spend",
- "totalConsumedAmount": "Total Spend",
- "successRate": "Success Rate",
- "avgResponseTime": "Avg Response Time",
- "avgTtfbMs": "Avg TTFB",
- "avgTokensPerSecond": "Avg tok/s",
- "avgCostPerRequest": "Avg Cost/Req",
- "avgCostPerMillionTokens": "Avg Cost/1M Tokens"
- },
- "expandModelStats": "Expand model details",
- "collapseModelStats": "Collapse model details",
- "states": {
- "loading": "Loading...",
- "noData": "No data available",
- "todayNoData": "No data available for today",
- "weekNoData": "No data available for this week",
- "monthNoData": "No data available for this month",
- "fetchFailed": "Failed to fetch leaderboard data"
- },
- "permission": {
- "title": "Permission Required",
- "restricted": "Access Restricted",
- "description": "The leaderboard feature requires administrators to enable the \"Allow Global Usage View\" permission.",
- "adminAction": "Enable this permission.",
- "userAction": "Please contact an administrator to enable this permission.",
- "systemSettings": "System Settings"
- },
- "filters": {
- "userTagsPlaceholder": "Filter by user tags...",
- "userGroupsPlaceholder": "Filter by user groups..."
- }
- },
- "sessions": {
- "title": "Active Sessions",
- "description": "Monitor current active API sessions in real-time",
- "monitoring": "Session Monitoring",
- "monitoringDescription": "Real-time display of active and inactive sessions (auto-refresh every 3 seconds)",
- "activeSessions": "Active Sessions (Last 5 Minutes)",
- "inactiveSessions": "Inactive Sessions (Over 5 Minutes, View Only)",
- "columns": {
- "sessionId": "Session ID",
- "user": "User",
- "key": "Key",
- "provider": "Provider",
- "model": "Model",
- "startTime": "Start Time",
- "lastActivity": "Last Activity",
- "requestCount": "Requests",
- "totalInput": "Total Input",
- "totalOutput": "Total Output",
- "totalCost": "Total Cost",
- "totalDuration": "Total Duration",
- "status": "Status",
- "actions": "Actions"
- },
- "table": {
- "count": "Total {count} {type} Sessions",
- "active": "Active",
- "inactive": "Inactive",
- "notCountedInConcurrency": "(Not counted in concurrency)",
- "refreshing": "Refreshing...",
- "noActiveSessions": "No active sessions"
- },
- "pagination": {
- "total": "total"
- },
- "details": {
- "title": "Session Messages",
- "messages": "Messages",
- "info": "Session Info",
- "timeline": "Timeline",
- "overview": "Session Overview",
- "overviewDescription": "Aggregated statistics",
- "providersAndModels": "Providers & Models",
- "providersAndModelsDescription": "Providers and models used",
- "tokenUsage": "Token Usage (Total)",
- "tokenUsageDescription": "Cumulative statistics for all requests",
- "costInfo": "Cost Information (Total)",
- "costInfoDescription": "Cumulative cost for all requests",
- "totalRequests": "Total Requests",
- "firstRequest": "First Request",
- "lastRequest": "Last Request",
- "totalDuration": "Total Duration",
- "totalInput": "Total Input",
- "totalOutput": "Total Output",
- "cacheCreation": "Cache Creation",
- "cacheTtlMixed": "Mixed",
- "cacheRead": "Cache Read",
- "total": "Total",
- "totalFee": "Total Fee",
- "providers": "Providers",
- "models": "Models",
- "noDetailedData": "No detailed data available",
- "storageTip": "No detailed data found. Possible reasons: Redis is disabled/unavailable (REDIS_URL + ENABLE_RATE_LIMIT=true), the data expired (SESSION_TTL, default 300s), or response body storage is disabled (STORE_SESSION_RESPONSE_BODY=false, affects response body only). To store unredacted messages, set STORE_SESSION_MESSAGES=true.",
- "clientInfo": "Client Info",
- "requestHeaders": "Request Headers",
- "requestBody": "Request Body",
- "requestMessages": "Request Messages",
- "specialSettings": "Special",
- "requestMessagesDescription": "Message content sent by the client",
- "responseHeaders": "Response Headers",
- "responseBody": "Response Body",
- "responseBodyDescription": "Complete server response (5-minute TTL)",
- "noHeaders": "No data",
- "noData": "No Data",
- "prevRequest": "Previous",
- "nextRequest": "Next"
- },
- "actions": {
- "back": "Back",
- "view": "View",
- "copy": "Copy",
- "download": "Download",
- "copyMessages": "Copy Request (Headers + Body)",
- "downloadMessages": "Download Request (Headers + Body)",
- "copied": "Copied",
- "copyResponse": "Copy Response",
- "terminate": "Terminate",
- "terminateTitle": "Terminate Session",
- "terminateDescription": "Are you sure you want to terminate this session? After termination, the provider binding for this session will be cleared, and the next request will reselect a provider.",
- "sessionIdLabel": "Session ID: {sessionId}",
- "cancel": "Cancel",
- "confirmTerminate": "Confirm Termination",
- "terminating": "Terminating...",
- "terminateSuccess": "Session terminated successfully",
- "terminateFailed": "Failed to terminate session",
- "terminateSelected": "Terminate Selected",
- "selectedCount": "{count} selected",
- "selectAll": "Select All",
- "selectSessionLabel": "Select session",
- "multiSelect": "Multi Select",
- "cancelMultiSelect": "Cancel",
- "terminateSessionTitle": "Terminate Session",
- "terminateSessionDescription": "Are you sure you want to terminate this session? This action cannot be undone.",
- "batchTerminateSuccess": "Terminated {count} session(s)",
- "batchTerminatePartial": "Unauthorized: {unauthorized} · Missing: {missing}",
- "batchTerminateAllowedFailed": "Failed to terminate {count} authorized session(s)",
- "batchTerminateNone": "No sessions were terminated",
- "noSelection": "Please select at least one session"
- },
- "codeDisplay": {
- "raw": "Raw",
- "pretty": "Pretty",
- "searchPlaceholder": "Search",
- "expand": "Expand",
- "collapse": "Collapse",
- "themeAuto": "Auto",
- "themeLight": "Light",
- "themeDark": "Dark",
- "noMatches": "No matches",
- "onlyMatches": "Only matches",
- "showAll": "Show all",
- "prevPage": "Prev",
- "nextPage": "Next",
- "pageInfo": "Page {page} / {total}",
- "sseEvent": "Event",
- "sseData": "Data",
- "hardLimit": {
- "title": "Content too large",
- "size": "Size: {sizeMB} MB ({sizeBytes} bytes)",
- "maximum": "Maximum allowed: {maxSizeMB} MB or {maxLines} lines",
- "hint": "Please download the file to view the full content.",
- "download": "Download"
- }
- },
- "status": {
- "loading": "Loading...",
- "loadError": "Load failed",
- "fetchFailed": "Fetch Failed",
- "unknownError": "Unknown Error",
- "storageNotEnabled": "Not Stored",
- "storageNotEnabledHint": "Tip: Check REDIS_URL and ENABLE_RATE_LIMIT=true (session details cache). To store unredacted messages, set STORE_SESSION_MESSAGES=true."
- },
- "errors": {
- "copyFailed": "Copy Failed"
- },
- "requestList": {
- "title": "Requests",
- "noRequests": "No requests found",
- "fetchFailed": "Failed to fetch requests",
- "unknownError": "Unknown error occurred",
- "prev": "Prev",
- "next": "Next",
- "orderAsc": "Switch to ascending order (oldest first)",
- "orderDesc": "Switch to descending order (newest first)"
- },
- "back": "Back",
- "loadingError": "Loading failed"
- },
- "quotas": {
- "title": "Quota Management",
- "description": "Manage user, key, and provider usage quotas",
- "tabs": {
- "overview": "Overview",
- "users": "User Quotas",
- "keys": "Key Quotas",
- "providers": "Provider Quotas"
- },
- "columns": {
- "name": "Name",
- "limit": "Limit",
- "used": "Used",
- "remaining": "Remaining",
- "resetTime": "Reset Time",
- "status": "Status"
- },
- "labels": {
- "byName": "By Name",
- "byUsageRate": "By Usage Rate",
- "all": "All",
- "warning": "Near Limit (>60%)",
- "exceeded": "Exceeded (≥100%)"
- },
- "users": {
- "title": "User Quota Statistics",
- "totalUsers": "Total {count} users"
- },
- "keys": {
- "title": "Key Quota Statistics",
- "totalKeysInfo": "Total {userCount} users, {keyCount} keys",
- "setKeyQuota": "Set Key Quota",
- "setUserQuota": "Set User Quota",
- "onlyKeyQuota": "Key Quota Only",
- "onlyUserQuota": "User Quota Only",
- "success": "User quota set successfully"
- },
- "providers": {
- "title": "Provider Quota Statistics",
- "totalProviders": "Total {count} providers"
- }
- },
- "labels": {
- "byName": "By Name",
- "byUsageRate": "By Usage Rate"
- },
- "nav": {
- "mobileMenuTitle": "Navigation Menu",
- "dashboard": "Dashboard",
- "usageLogs": "Usage Logs",
- "leaderboard": "Leaderboard",
- "availability": "Availability",
- "myQuota": "My Quota",
- "quotasManagement": "Quotas",
- "userManagement": "Users",
- "providers": "Providers",
- "documentation": "Docs",
- "systemSettings": "Settings",
- "feedback": "Feedback",
- "login": "Login",
- "logout": "Logout"
- },
- "statistics": {
- "title": "Usage Statistics",
- "cost": "Consumption Amount",
- "calls": "API Calls",
- "totalCost": "Total Consumption Amount",
- "totalCalls": "Total API Calls",
- "timeRange": {
- "today": "Today",
- "todayDescription": "Today's usage",
- "7days": "Last 7 Days",
- "7daysDescription": "Usage for the last 7 days",
- "30days": "Last 30 Days",
- "30daysDescription": "Usage for the last 30 days",
- "thisMonth": "This Month",
- "thisMonthDescription": "Usage for this month",
- "default": "Usage"
- },
- "mode": {
- "keys": "Only display usage statistics for your keys",
- "mixed": "Display your key details and aggregated data from other users",
- "users": "Display usage statistics for all users"
- },
- "legend": {
- "selectAll": "Select All",
- "deselectAll": "Clear",
- "selected": "Selected"
- },
- "chartMode": {
- "label": "Display Mode",
- "overlay": "Overlay",
- "stacked": "Stacked"
- },
- "states": {
- "noData": "No statistics data available",
- "fetchFailed": "Failed to fetch statistics"
- },
- "othersAggregate": "Other Users"
- },
- "errors": {
- "fetchSystemSettingsFailed": "Failed to fetch system settings",
- "fetchFailed": "Fetch failed",
- "fetchSessionListFailed": "Failed to fetch session list"
- },
- "keyList": {
- "columns": {
- "name": "Name",
- "key": "Key",
- "todayCalls": "Today's Calls",
- "todayCost": "Today's Cost",
- "lastUsed": "Last Used",
- "actions": "Actions"
- },
- "detailsButton": "Details",
- "modelStats": "Model Statistics",
- "modelStatsColumns": {
- "model": "Model",
- "calls": "Calls",
- "cost": "Cost"
- },
- "limitUsage": "Limit Usage",
- "copyKeyTooltip": "Copy full key",
- "showKeyTooltip": "Show full key",
- "hideKeyTooltip": "Hide key",
- "copyFailed": "Copy failed:",
- "timesUnit": "times",
- "provider": "Provider",
- "neverUsed": "Never used",
- "viewLogsTooltip": "View detailed logs",
- "logsButton": "Logs",
- "emptyState": {
- "title": "No Keys",
- "description": "Click the \"Add Key\" button in the top right corner to add a key"
- }
- },
- "userList": {
- "title": "User List",
- "badge": "{count} Keys",
- "activeKeys": "Active Keys",
- "totalKeys": "Total Keys",
- "expiresAt": "Expiration",
- "status": {
- "active": "Active",
- "expiringSoon": "Expiring Soon",
- "expired": "Expired",
- "disabled": "Disabled"
- },
- "actions": {
- "renew": "Renew",
- "renew30d": "Renew for 30 days",
- "renew90d": "Renew for 90 days",
- "renew1y": "Renew for 1 year",
- "renewCustom": "Custom...",
- "customRenewTitle": "Custom Renewal",
- "customRenewDescription": "Set a new expiration date for user {userName}",
- "expirationDate": "Expiration Date",
- "enableOnRenew": "Enable user on renewal",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "customPrompt": "Enter a new expiry date (YYYY-MM-DD). Leave empty to cancel.",
- "invalidDate": "Please enter a valid date",
- "enable": "Enable",
- "disable": "Disable",
- "success": "Operation succeeded",
- "failed": "Operation failed, please try again"
- },
- "emptyState": {
- "title": "No Users",
- "description": "You haven't created any users yet. Users are the foundation for managing API keys and usage quotas. Create your first user to get started!",
- "action": "Create Your First User"
- },
- "addUser": "Add User"
- },
- "keyListHeader": {
- "todayUsage": "Today's Usage",
- "allowedModels": {
- "label": "Allowed Models",
- "noRestrictions": "Allowed Models: No restrictions"
- },
- "expiresAt": "Expires",
- "proxyStatus": {
- "loading": "Loading proxy status",
- "fetchFailed": "Failed to fetch proxy status",
- "noStatus": "No proxy status",
- "activeRequests": "Active Requests",
- "lastRequest": "Last Request",
- "noRecord": "No record",
- "timeAgo": {
- "justNow": "Just now",
- "secondsAgo": "{count}s ago",
- "minutesAgo": "{count} min ago",
- "hoursAgo": "{count}h ago",
- "daysAgo": "{count}d ago"
- }
- },
- "addKey": "Add Key",
- "keyCreatedDialog": {
- "title": "Key Created Successfully",
- "description": "Your API key has been created successfully. Please copy and save it securely, as it will only be displayed once.",
- "apiKeyLabel": "API Key",
- "warningText": "Please copy and save before closing. You will not be able to view this key again after closing.",
- "httpWarningText": "HTTP access detected. Browser restrictions prevent clipboard access. Click the eye icon to reveal the key and copy manually.",
- "copyTooltip": "Copy to clipboard",
- "showTooltip": "Show full key",
- "hideTooltip": "Hide key",
- "closeButton": "Close"
- },
- "allowedClients": {
- "label": "Clients allowed",
- "noRestrictions": "Clients allowed: no restrictions"
- }
- },
- "keyLimitUsage": {
- "loading": "Loading...",
- "error": "Fetch failed",
- "networkError": "Network error",
- "cost5h": "5-Hour Cost",
- "costDaily": "Daily Cost",
- "costWeekly": "Weekly Cost",
- "costMonthly": "Monthly Cost",
- "costTotal": "Total Cost",
- "concurrentSessions": "Concurrent Sessions",
- "noLimit": "No quota limits"
- },
- "addKeyForm": {
- "title": "Add Key",
- "description": "Create a new API key for the current user. The key value will be auto-generated.",
- "submitText": "Create Key",
- "loadingText": "Creating...",
- "keyName": {
- "label": "Key Name",
- "placeholder": "Enter key name"
- },
- "expiresAt": {
- "label": "Expiration Time",
- "placeholder": "Select expiration time",
- "description": "Leave blank for never expires"
- },
- "canLoginWebUi": {
- "label": "Allow Web UI Login",
- "description": "When disabled, this key can only be used for API calls and cannot login to the admin panel"
- },
- "limit5hUsd": {
- "label": "5-Hour Cost Limit (USD)",
- "placeholder": "Leave blank for unlimited",
- "description": "Maximum cost within 5 hours",
- "descriptionWithUserLimit": "Maximum cost within 5 hours (User limit: {limit})"
- },
- "limitDailyUsd": {
- "label": "Daily Cost Limit (USD)",
- "placeholder": "Leave blank for unlimited",
- "description": "Maximum cost per day"
- },
- "dailyResetMode": {
- "label": "Daily Reset Mode",
- "options": {
- "fixed": "Fixed Time Reset",
- "rolling": "Rolling Window (24h)"
- },
- "desc": {
- "fixed": "Reset quota at a specific time each day",
- "rolling": "24-hour rolling window from first request"
- }
- },
- "dailyResetTime": {
- "label": "Daily Reset Time",
- "placeholder": "HH:mm",
- "description": "When the daily limit resets (uses system timezone)"
- },
- "limitWeeklyUsd": {
- "label": "Weekly Cost Limit (USD)",
- "placeholder": "Leave blank for unlimited",
- "description": "Maximum cost per week",
- "descriptionWithUserLimit": "Maximum cost per week (User limit: {limit})"
- },
- "limitMonthlyUsd": {
- "label": "Monthly Cost Limit (USD)",
- "placeholder": "Leave blank for unlimited",
- "description": "Maximum cost per month",
- "descriptionWithUserLimit": "Maximum cost per month (User limit: {limit})"
- },
- "limitTotalUsd": {
- "label": "Total Cost Limit (USD)",
- "placeholder": "Leave blank for unlimited",
- "description": "Maximum cumulative spending (no reset)",
- "descriptionWithUserLimit": "Cannot exceed user total limit ({limit})"
- },
- "limitConcurrentSessions": {
- "label": "Concurrent Session Limit",
- "placeholder": "0 means unlimited",
- "description": "Number of simultaneous conversations",
- "descriptionWithUserLimit": "Maximum sessions (User limit: {limit})"
- },
- "providerGroup": {
- "label": "Provider Group",
- "placeholder": "Enter provider group tags, press Enter to add",
- "description": "Provider groups for this key (default: default).",
- "defaultDescription": "default includes providers without groupTag.",
- "descriptionWithUserGroup": "Provider groups for this key (user groups: {group}; default: default)."
- },
- "cacheTtl": {
- "label": "Cache TTL Override",
- "description": "Force Anthropic prompt cache TTL for requests containing cache_control.",
- "options": {
- "inherit": "No override (follow provider/client)",
- "5m": "5m",
- "1h": "1h"
- }
- },
- "successTitle": "Key Created Successfully",
- "successDescription": "Your API key has been created successfully.",
- "generatedKey": {
- "label": "Generated Key",
- "hint": "You can manage this key in the key list (enable/disable, quotas, etc.), but the full key is only shown once. Copy it now."
- },
- "errors": {
- "userIdMissing": "User ID does not exist",
- "createFailed": "Failed to create, please try again later",
- "noKeyReturned": "Created successfully but key was not returned"
- }
- },
- "userForm": {
- "title": {
- "add": "Add User",
- "edit": "Edit User"
- },
- "description": {
- "add": "Create a new user. The system will automatically generate a default key.",
- "edit": "Modify user's basic information."
- },
- "submitText": {
- "add": "Create User",
- "edit": "Save Changes"
- },
- "loadingText": {
- "add": "Creating...",
- "edit": "Saving..."
- },
- "username": {
- "label": "Username",
- "placeholder": "Enter username"
- },
- "note": {
- "label": "Note",
- "placeholder": "Enter note (optional)",
- "description": "Used to describe the user's purpose or notes"
- },
- "providerGroup": {
- "label": "Provider Group",
- "placeholder": "e.g., default or premium,economy",
- "description": "User provider groups (default: default). Providers without groupTag belong to default."
- },
- "tags": {
- "label": "User Tags",
- "placeholder": "Enter tag (press Enter to add)",
- "description": "Add tags for categorization and filtering (max 20 tags, 32 characters each)"
- },
- "rpm": {
- "label": "RPM Limit",
- "placeholder": "Requests per minute limit",
- "description": "Default: {default}, Range: 1-10000"
- },
- "dailyQuota": {
- "label": "Daily Quota",
- "placeholder": "Daily consumption quota limit",
- "helperText": "Set to 0 for unlimited",
- "description": "Default: ${default}, Range: $0.01-$1000"
- },
- "limit5hUsd": {
- "label": "5-Hour Quota (USD)",
- "placeholder": "Leave empty for unlimited",
- "description": "Maximum spending in 5 hours"
- },
- "limitWeeklyUsd": {
- "label": "Weekly Quota (USD)",
- "placeholder": "Leave empty for unlimited",
- "description": "Maximum weekly spending"
- },
- "limitMonthlyUsd": {
- "label": "Monthly Quota (USD)",
- "placeholder": "Leave empty for unlimited",
- "description": "Maximum monthly spending"
- },
- "limitTotalUsd": {
- "label": "Total Quota (USD)",
- "placeholder": "Leave empty for unlimited",
- "description": "Maximum lifetime spending"
- },
- "limitConcurrentSessions": {
- "label": "Concurrent Sessions Limit",
- "placeholder": "0 means unlimited",
- "description": "Number of simultaneous conversations"
- },
- "isEnabled": {
- "label": "Enable User",
- "description": "Disabled users cannot access the API"
- },
- "expiresAt": {
- "label": "Expiration Date",
- "placeholder": "Leave empty for never expires",
- "description": "User will be automatically disabled after expiration",
- "pastWarning": "Selected date is in the past. The user will expire and be disabled immediately after saving."
- },
- "allowedClients": {
- "label": "Allowed Clients",
- "description": "Restrict which CLI/IDE clients can use this account. Leave empty for no restrictions.",
- "customLabel": "Custom Client Patterns",
- "customPlaceholder": "Enter custom pattern (e.g., 'xcode', 'my-ide')"
- },
- "allowedModels": {
- "label": "Allowed Models",
- "placeholder": "Enter model name (press Enter to add)",
- "description": "Restrict this user to specific AI models. Leave empty for no restrictions (max 50 models, 64 chars each)"
- }
- },
- "deleteKeyConfirm": {
- "title": "Confirm Delete Key",
- "description": "Are you sure you want to delete key \"{name}\"?\n{maskedKey}\nThis action cannot be undone. All applications using this key will lose access.",
- "cancel": "Cancel",
- "confirm": "Confirm Delete",
- "confirmLoading": "Deleting...",
- "errors": {
- "deleteFailed": "Delete failed",
- "retryError": "Delete failed, please try again later"
- }
- },
- "keyActions": {
- "edit": "Edit",
- "delete": "Delete",
- "editAriaLabel": "Edit key",
- "deleteAriaLabel": "Delete key"
- },
- "userActions": {
- "edit": "Edit user",
- "delete": "Delete user",
- "editAriaLabel": "Edit user",
- "deleteAriaLabel": "Delete user"
- },
- "availability": {
- "title": "Provider Availability Monitor",
- "description": "Real-time monitoring of provider availability and performance metrics",
- "nav": "Availability Monitor",
- "tabs": {
- "provider": "Provider Availability",
- "endpoint": "Endpoint Health"
- },
- "overview": {
- "systemAvailability": "System Availability",
- "avgLatency": "Avg Latency",
- "errorRate": "Error Rate",
- "activeProbes": "Active Probes",
- "load": "Load"
- },
- "status": {
- "green": "Healthy",
- "red": "Unhealthy",
- "unknown": "Unknown"
- },
- "statusDescription": {
- "green": "Service is healthy, requests successful",
- "red": "Service unavailable or error",
- "unknown": "No data available"
- },
- "metrics": {
- "systemAvailability": "System Availability",
- "totalRequests": "Total Requests",
- "successRate": "Success Rate",
- "avgLatency": "Avg Latency",
- "p50Latency": "P50 Latency",
- "p95Latency": "P95 Latency",
- "p99Latency": "P99 Latency",
- "lastRequest": "Last Request",
- "requestCount": "Request Count"
- },
- "timeRange": {
- "label": "Time Range",
- "15min": "15 min",
- "1h": "1 hour",
- "6h": "6 hours",
- "24h": "24 hours",
- "7d": "7 days",
- "last15min": "Last 15 minutes",
- "last1h": "Last 1 hour",
- "last6h": "Last 6 hours",
- "last24h": "Last 24 hours",
- "last7d": "Last 7 days",
- "custom": "Custom"
- },
- "filters": {
- "provider": "Provider",
- "allProviders": "All Providers",
- "includeDisabled": "Include Disabled"
- },
- "sort": {
- "label": "Sort By",
- "availability": "Availability",
- "name": "Name",
- "requests": "Requests"
- },
- "columns": {
- "provider": "Provider",
- "type": "Type",
- "status": "Status",
- "availability": "Availability",
- "requests": "Requests",
- "successRate": "Success Rate",
- "avgLatency": "Avg Latency",
- "lastRequest": "Last Request",
- "actions": "Actions"
- },
- "chart": {
- "title": "Availability Trend",
- "description": "Availability changes over time periods",
- "availabilityScore": "Availability Score",
- "requestVolume": "Request Volume",
- "latencyTrend": "Latency Trend",
- "noData": "No Data"
- },
- "details": {
- "title": "Provider Details",
- "overview": "Overview",
- "timeBuckets": "Time Buckets",
- "greenCount": "Successful Requests",
- "redCount": "Failed Requests"
- },
- "actions": {
- "refresh": "Refresh",
- "refreshing": "Refreshing...",
- "autoRefresh": "Auto Refresh",
- "stopAutoRefresh": "Stop Auto Refresh",
- "viewDetails": "View Details",
- "testProvider": "Test Provider",
- "retry": "Retry",
- "probeNow": "Probe Now",
- "probing": "Probing...",
- "probeAll": "Probe All",
- "probeSuccess": "Probe successful",
- "probeFailed": "Probe failed"
- },
- "states": {
- "loading": "Loading...",
- "error": "Load Failed",
- "noProviders": "No Providers",
- "noData": "No availability data",
- "fetchFailed": "Failed to fetch availability data"
- },
- "legend": {
- "green": "Excellent (95%+ availability)",
- "lime": "Good (80-95% availability)",
- "orange": "Warning (50-80% availability)",
- "red": "Unhealthy (<50% availability)",
- "noData": "No Data"
- },
- "summary": {
- "title": "Availability Summary",
- "healthyProviders": "Healthy Providers",
- "unhealthyProviders": "Unhealthy Providers",
- "unknownProviders": "No Data",
- "totalProviders": "Total Providers"
- },
- "heatmap": {
- "bucketSize": "Bucket Size",
- "minutes": "min",
- "requests": "requests",
- "noData": "No Data",
- "noRequests": "No Requests"
- },
- "probeHistory": {
- "title": "Endpoint Probe History",
- "description": "View probe logs and manually trigger probes for specific endpoints",
- "selectVendor": "Select Vendor",
- "selectType": "Select Provider Type",
- "selectEndpoint": "Select Endpoint",
- "noEndpoints": "No endpoints found",
- "probeNow": "Probe Now",
- "probing": "Probing...",
- "columns": {
- "time": "Time",
- "method": "Method",
- "status": "Status",
- "latency": "Latency",
- "error": "Error"
- },
- "success": "Success",
- "manual": "Manual Probe",
- "auto": "Auto Probe",
- "probeSuccess": "Probe successful",
- "probeFailed": "Probe failed"
- },
- "laneChart": {
- "title": "Provider Availability Timeline",
- "noData": "No data available",
- "requests": "{count} requests",
- "availability": "{value}% available",
- "noRequests": "No requests",
- "denseData": "Dense",
- "sparseData": "Sparse",
- "latency": "Latency"
- },
- "latencyChart": {
- "title": "Latency Distribution",
- "p50": "P50",
- "p95": "P95",
- "p99": "P99",
- "noData": "No latency data available"
- },
- "latencyCurve": {
- "title": "Latency Trend",
- "noData": "No latency data available",
- "avg": "Avg",
- "min": "Min",
- "max": "Max",
- "latency": "Latency"
- },
- "terminal": {
- "title": "Probe Logs",
- "live": "LIVE",
- "download": "Download logs",
- "noLogs": "No probe logs available",
- "manual": "MANUAL",
- "auto": "AUTO",
- "filterPlaceholder": "Filter logs..."
- },
- "probeGrid": {
- "title": "Endpoint Status",
- "noEndpoints": "No endpoints configured",
- "lastProbe": "Last probe",
- "status": {
- "unknown": "Unknown",
- "healthy": "Healthy",
- "unhealthy": "Unhealthy"
- }
- },
- "endpoint": {
- "selectVendor": "Select vendor",
- "selectType": "Select type"
- },
- "confidence": {
- "low": "Low",
- "medium": "Medium",
- "high": "High",
- "lowTooltip": "Less than {count} requests. Data may not be representative.",
- "mediumTooltip": "Moderate request volume. Data is reasonably reliable.",
- "highTooltip": "High request volume. Data is reliable."
- },
- "toast": {
- "refreshSuccess": "Availability data refreshed",
- "refreshFailed": "Refresh failed, please retry"
- }
- },
- "rateLimits": {
- "title": "Rate Limit Event Statistics",
- "description": "View and analyze statistics for rate limit events",
- "loading": "Loading...",
- "error": "Load Failed",
- "totalEvents": "Total Events",
- "avgUsage": "Avg Usage",
- "affectedUsers": "Affected Users",
- "noData": "No Data",
- "noDataHint": "No rate limit events in the selected time range",
- "filters": {
- "startTime": "Start Time",
- "endTime": "End Time",
- "user": "User",
- "provider": "Provider",
- "limitType": "Limit Type",
- "allUsers": "All Users",
- "allProviders": "All Providers",
- "allLimitTypes": "All Types",
- "apply": "Apply Filters",
- "reset": "Reset",
- "loading": "Loading...",
- "limitTypes": {
- "rpm": "RPM Limit",
- "usd_5h": "5h Spend Limit",
- "usd_weekly": "Weekly Spend Limit",
- "usd_monthly": "Monthly Spend Limit",
- "concurrent_sessions": "Concurrent Session Limit",
- "daily_quota": "Daily Quota Limit"
- }
- },
- "chart": {
- "title": "Rate Limit Timeline",
- "description": "Hourly trend of rate limit events",
- "total": "Total",
- "events": "Events"
- },
- "breakdown": {
- "title": "Rate Limit Type Breakdown",
- "description": "Share of events by rate limit type",
- "total": "Total",
- "count": "Events",
- "percentage": "Percentage",
- "noData": "No Data",
- "types": {
- "rpm": "RPM",
- "usd_5h": "5h Spend",
- "usd_weekly": "Weekly Spend",
- "usd_monthly": "Monthly Spend",
- "concurrent_sessions": "Concurrent Sessions",
- "daily_quota": "Daily Quota"
- }
- },
- "topUsers": {
- "title": "Top Affected Users",
- "description": "Users who triggered rate limits most frequently",
- "total": "Total",
- "rank": "Rank",
- "username": "Username",
- "eventCount": "Events",
- "percentage": "Percentage",
- "loading": "Loading...",
- "noData": "No Data"
- }
- },
- "users": {
- "title": "User Management",
- "description": "Showing {count} users",
- "toolbar": {
- "searchPlaceholder": "Search name, note, tags, keys...",
- "groupFilter": "Filter by Group",
- "allGroups": "All Groups",
- "tagFilter": "Filter by Tag",
- "allTags": "All Tags",
- "keyGroupFilter": "Key Group",
- "allKeyGroups": "All Key Groups",
- "sortBy": "Sort by",
- "sortOrder": "Sort order",
- "sortByName": "Name",
- "sortByTags": "Tags",
- "sortByExpiresAt": "Expires at",
- "sortByRpm": "RPM Limit",
- "sortByLimit5h": "5h limit",
- "sortByLimitDaily": "Daily limit",
- "sortByLimitWeekly": "Weekly limit",
- "sortByLimitMonthly": "Monthly limit",
- "sortByCreatedAt": "Created at",
- "ascending": "Ascending",
- "descending": "Descending",
- "statusFilter": "Status",
- "allStatus": "All statuses",
- "statusActive": "Active",
- "statusExpired": "Expired",
- "statusExpiringSoon": "Expiring soon",
- "statusEnabled": "Enabled",
- "statusDisabled": "Disabled",
- "createUser": "Create User",
- "createKey": "Create Key"
- },
- "dialog": {
- "userProviderGroup": "Your Provider Groups",
- "userProviderGroupHint": "New keys can only use your existing provider groups."
- }
- },
- "userManagement": {
- "table": {
- "columns": {
- "username": "Username",
- "note": "Note",
- "expiresAt": "Expires at",
- "expiresAtHint": "Click to quick renew",
- "limitRpm": "RPM",
- "limit5h": "5h limit",
- "limitDaily": "Daily limit",
- "limitWeekly": "Weekly limit",
- "limitMonthly": "Monthly limit",
- "limitTotal": "Total limit",
- "limitSessions": "Concurrent sessions"
- },
- "keyRow": {
- "name": "Key name",
- "key": "Key",
- "group": "Group",
- "todayUsage": "Requests today",
- "todayCost": "Today's cost",
- "todayTokens": "Tokens today",
- "lastUsed": "Last used",
- "actions": "Actions",
- "quotaButton": "View Quota Usage",
- "fields": {
- "callsLabel": "Requests",
- "tokensLabel": "Tokens",
- "costLabel": "Cost"
- }
- },
- "expand": "Expand",
- "collapse": "Collapse",
- "refresh": "Refresh",
- "noKeys": "No keys",
- "defaultGroup": "default",
- "userStatus": {
- "disabled": "Disabled"
- },
- "actions": {
- "addKey": "Add Key"
- }
- },
- "keyFullDisplay": {
- "title": "Full Key",
- "copySuccess": "Key copied to clipboard",
- "copyFailed": "Copy failed",
- "show": "Show key",
- "hide": "Hide key",
- "copied": "Copied",
- "copy": "Copy key"
- },
- "keyStatsDialog": {
- "title": "Today's Model Statistics",
- "columns": {
- "model": "Model",
- "calls": "Calls",
- "tokens": "Tokens",
- "cost": "Cost"
- },
- "modal": {
- "requests": "Requests",
- "totalTokens": "Total Tokens",
- "cost": "Cost",
- "inputTokens": "Input Tokens",
- "outputTokens": "Output Tokens",
- "cacheWrite": "Cache Write",
- "cacheRead": "Cache Read",
- "cacheHitRate": "Cache Hit Rate",
- "cacheTokens": "Cache Tokens",
- "performanceHigh": "High",
- "performanceMedium": "Medium",
- "performanceLow": "Low"
- },
- "noData": "No usage records today",
- "totalCalls": "Total Calls",
- "totalCost": "Total Cost"
- },
- "keyQuotaUsageDialog": {
- "title": "Key Quota Usage",
- "fetchFailed": "Failed to fetch quota usage",
- "noLimit": "No limit",
- "modeFixed": "Fixed time",
- "modeRolling": "Rolling 24h",
- "retry": "Retry",
- "labels": {
- "limit5h": "5 Hours",
- "limitDaily": "Daily",
- "limitWeekly": "Weekly",
- "limitMonthly": "Monthly",
- "limitTotal": "Total",
- "limitSessions": "Concurrent"
- }
- },
- "quickRenew": {
- "title": "Quick Renew",
- "description": "Set a new expiration date for user {userName}",
- "currentExpiry": "Current Expiration",
- "neverExpires": "Never expires",
- "expired": "Expired",
- "quickExtensionLabel": "Quick Extension",
- "quickExtensionHint": "Extend from current expiry (or from now if expired)",
- "customDateLabel": "Set Expiry Date",
- "customDateHint": "Directly specify an expiry date",
- "quickOptions": {
- "7days": "7 Days",
- "30days": "30 Days",
- "90days": "90 Days",
- "1year": "1 Year"
- },
- "customDate": "Custom Date",
- "enableOnRenew": "Also enable user",
- "enableKeyOnRenew": "Also enable key",
- "cancel": "Cancel",
- "confirm": "Confirm Renewal",
- "confirming": "Renewing...",
- "success": "Renewal successful",
- "failed": "Renewal failed"
- },
- "dialog": {
- "createKeyTitle": "Create Key",
- "editKeyTitle": "Edit Key"
- },
- "editDialog": {
- "title": "Edit user",
- "description": "Edit user information",
- "userSection": "User settings",
- "keysSection": "Key settings",
- "scrollToKey": "Scroll to key",
- "saveFailed": "Failed to save user",
- "keySaveFailed": "Failed to save key",
- "keyDeleteFailed": "Failed to delete key",
- "saveSuccess": "Changes saved successfully",
- "atLeastOneKeyEnabled": "At least one key must be enabled",
- "operationFailed": "Operation failed",
- "userDisabled": "User has been disabled",
- "userEnabled": "User has been enabled",
- "deleteFailed": "Failed to delete user",
- "userDeleted": "User has been deleted",
- "saving": "Saving...",
- "resetData": {
- "title": "Reset Statistics",
- "description": "Delete all request logs and usage data for this user. This action is irreversible.",
- "error": "Failed to reset data",
- "button": "Reset Statistics",
- "confirmTitle": "Reset All Statistics?",
- "confirmDescription": "This will permanently delete all request logs and usage statistics for this user. This action cannot be undone.",
- "confirm": "Yes, Reset All",
- "loading": "Resetting...",
- "success": "All statistics have been reset"
- }
- },
- "batchEdit": {
- "enterMode": "Batch Edit",
- "exitMode": "Exit",
- "selectAll": "Select All",
- "selectedCount": "Selected {users} users, {keys} keys",
- "editSelected": "Edit Selected",
- "dialog": {
- "title": "Batch Edit",
- "description": "Will affect {users} users and {keys} keys",
- "cancel": "Cancel",
- "next": "Next",
- "noFieldEnabled": "Please enable at least one field to override",
- "noUpdate": "No updates to execute",
- "noSelection": "Please select users or keys to batch edit first."
- },
- "confirm": {
- "title": "Confirm Batch Update",
- "description": "This will update {users} users and {keys} keys. This action cannot be undone.",
- "userFields": "User Fields",
- "keyFields": "Key Fields",
- "goBack": "Go Back",
- "update": "Confirm Update",
- "updating": "Updating..."
- },
- "toast": {
- "usersUpdated": "Updated {count} users",
- "keysUpdated": "Updated {count} keys",
- "usersFailed": "User update failed: {error}",
- "keysFailed": "Key update failed: {error}",
- "batchFailed": "Batch update failed"
- },
- "validation": {
- "invalidNumber": "Please enter a valid number",
- "negativeNumber": "Value cannot be negative"
- },
- "aria": {
- "selectUser": "Select user",
- "selectKey": "Select key"
- },
- "user": {
- "title": "User Settings",
- "affected": "Will affect {count} users",
- "enableFieldAria": "Enable field: {title}",
- "fields": {
- "note": "Note",
- "tags": "Tags",
- "rpm": "RPM Limit",
- "limit5h": "5h Limit (USD)",
- "limitDaily": "Daily Limit (USD)",
- "limitWeekly": "Weekly Limit (USD)",
- "limitMonthly": "Monthly Limit (USD)"
- },
- "placeholders": {
- "emptyToClear": "Leave empty to clear",
- "tagsPlaceholder": "Press enter to add, comma-separated",
- "emptyNoLimit": "Leave empty for no limit"
- }
- },
- "key": {
- "title": "Key Settings",
- "affected": "Will affect {count} keys",
- "fields": {
- "providerGroup": "Group (providerGroup)",
- "limit5h": "5h Limit (USD)",
- "limitDaily": "Daily Limit (USD)",
- "limitWeekly": "Weekly Limit (USD)",
- "limitMonthly": "Monthly Limit (USD)",
- "canLoginWebUi": "Independent Personal Usage Page",
- "keyEnabled": "Key Enabled Status"
- },
- "placeholders": {
- "groupPlaceholder": "Leave empty to clear, comma-separated for multiple",
- "emptyNoLimit": "Leave empty for no limit"
- },
- "targetValue": "Target Value"
- }
- },
- "createDialog": {
- "title": "Create user",
- "description": "Create a new user and configure API keys",
- "saveFailed": "Failed to create user",
- "keyCreateFailed": "Failed to create key",
- "rollbackFailed": "Rollback failed. The user may have been created without a key. Please delete the user manually (userId: {userId}) and try again.",
- "createSuccess": "User created successfully",
- "successTitle": "Created Successfully",
- "successDescription": "User and key have been created",
- "generatedKey": "Generated Key",
- "keyHint": "You can manage this key from the user management page (enable/disable, quotas, etc.), but the full key is only shown once. Copy it now.",
- "keysSection": "Keys",
- "addKey": "Add key",
- "removeKey": "Remove key",
- "cannotDeleteLastKey": "Cannot delete the last key",
- "confirmRemoveKeyTitle": "Remove key",
- "confirmRemoveKeyDescription": "Are you sure you want to remove the key \"{name}\"?",
- "creating": "Creating...",
- "create": "Create"
- },
- "limitRules": {
- "addRule": "Add limit rule",
- "title": "Add Limit Rule",
- "description": "Select limit type and set value",
- "cancel": "Cancel",
- "confirm": "Save",
- "fields": {
- "type": {
- "label": "Limit Type",
- "placeholder": "Select"
- },
- "value": {
- "label": "Value",
- "placeholder": "Enter"
- }
- },
- "daily": {
- "mode": {
- "label": "Daily Reset Mode",
- "fixed": "Fixed time reset",
- "rolling": "Rolling window (24h)",
- "helperRolling": "Rolling 24-hour window from first request"
- },
- "time": {
- "label": "Reset Time",
- "placeholder": "HH:mm"
- }
- },
- "limitTypes": {
- "limitRpm": "RPM Limit",
- "limit5h": "5-Hour Limit",
- "limitDaily": "Daily Limit",
- "limitWeekly": "Weekly Limit",
- "limitMonthly": "Monthly Limit",
- "limitTotal": "Total Limit",
- "limitSessions": "Concurrent Sessions"
- },
- "ruleTypes": {
- "limitRpm": "RPM limit",
- "limit5h": "5-hour limit",
- "limitDaily": "Daily limit",
- "limitWeekly": "Weekly limit",
- "limitMonthly": "Monthly limit",
- "limitTotal": "Total limit",
- "limitSessions": "Concurrent sessions"
- },
- "errors": {
- "missingType": "Please select a limit type",
- "invalidValue": "Please enter a valid value",
- "invalidTime": "Please enter a valid time (HH:mm)"
- },
- "overwriteHint": "This type already exists, saving will overwrite the existing value",
- "dailyMode": {
- "fixed": "Fixed reset time",
- "rolling": "Rolling window (24h)"
- },
- "quickValues": {
- "unlimited": "Unlimited",
- "10": "$10",
- "50": "$50",
- "100": "$100",
- "500": "$500"
- },
- "alreadySet": "Configured",
- "confirmAdd": "Add"
- },
- "quickExpire": {
- "oneWeek": "In 1 week",
- "oneMonth": "In 1 month",
- "threeMonths": "In 3 months",
- "oneYear": "In 1 year"
- },
- "providerGroupSelect": {
- "providersSuffix": "providers",
- "loadFailed": "Failed to load provider groups"
- },
- "providerGroup": {
- "label": "Provider group",
- "placeholder": "Select provider group",
- "noRestriction": "No restriction (all providers)",
- "providerCount": "{count} providers"
- },
- "dangerZone": {
- "title": "Danger Zone",
- "description": "The following actions are irreversible, proceed with caution",
- "enable": {
- "title": "Enable User",
- "description": "After enabling, this user and their keys will resume normal operation",
- "trigger": "Enable",
- "confirm": "Confirm Enable",
- "confirmDescription": "Are you sure you want to enable user \"{userName}\"?",
- "loading": "Processing..."
- },
- "disable": {
- "title": "Disable User",
- "description": "After disabling, this user and their keys will no longer be usable",
- "trigger": "Disable",
- "confirm": "Confirm Disable",
- "confirmDescription": "Are you sure you want to disable user \"{userName}\"?",
- "loading": "Processing..."
- },
- "delete": {
- "title": "Delete User",
- "description": "This will delete all associated data for this user, this action cannot be undone",
- "trigger": "Delete",
- "confirm": "Confirm Delete",
- "confirmDescription": "This action will delete all associated data for user \"{userName}\" and cannot be undone.",
- "confirmLabel": "Secondary Confirmation",
- "confirmHint": "Please type \"{userName}\" to confirm deletion",
- "loading": "Deleting..."
- },
- "actions": {
- "cancel": "Cancel"
- },
- "errors": {
- "enableFailed": "Failed to enable user, please try again later",
- "disableFailed": "Failed to disable user, please try again later",
- "deleteFailed": "Failed to delete user, please try again later"
- }
- },
- "limitIndicator": {
- "notSet": "Not set",
- "unlimited": "Unlimited"
- },
- "keySettings": {
- "balanceQueryPage": {
- "label": "Enable dedicated balance page",
- "description": "Allow users to view their balance via a dedicated page",
- "descriptionEnabled": "When enabled, this key will access an independent personal usage page upon login. However, it cannot modify its own key's provider group.",
- "descriptionDisabled": "When disabled, the user cannot access the personal usage page UI. Instead, they will use the restricted Web UI."
- },
- "cacheTtlOverride": {
- "label": "Cache TTL override",
- "inherit": "No override (follow provider/client)",
- "5m": "5 minutes",
- "1h": "1 hour"
- }
- },
- "pagination": {
- "previous": "Previous",
- "next": "Next",
- "page": "Page {current}",
- "of": "of {total}"
- },
- "toolbar": {
- "expandAll": "Expand all",
- "collapseAll": "Collapse all"
- },
- "keyStatus": {
- "enabled": "Enabled",
- "disabled": "Disabled",
- "active": "Active",
- "expired": "Expired",
- "expiringSoon": "Expiring Soon",
- "keyEnabled": "Key enabled",
- "keyDisabled": "Key disabled",
- "toggleKeyStatus": "Toggle key status",
- "clickToDisableKey": "Click to disable key",
- "clickToEnableKey": "Click to enable key",
- "operationFailed": "Operation failed",
- "clickToQuickRenew": "Click to quick renew"
- },
- "userStatus": {
- "enabled": "Enabled",
- "disabled": "Disabled",
- "active": "Active",
- "expired": "Expired",
- "expiringSoon": "Expiring Soon",
- "userEnabled": "User enabled",
- "userDisabled": "User disabled",
- "toggleUserStatus": "Toggle user status",
- "clickToDisableUser": "Click to disable user",
- "clickToEnableUser": "Click to enable user",
- "operationFailed": "Operation failed",
- "deleteFailed": "Delete failed",
- "deleteSuccess": "Delete successful",
- "daysLeft": "{days, plural, =0 {Expires today} =1 {1 day left} other {# days left}}"
- },
- "userEditSection": {
- "sections": {
- "basicInfo": "Basic Information",
- "expireTime": "Expiration Time",
- "limitRules": "Limit Rules",
- "accessRestrictions": "Access Restrictions"
- },
- "fields": {
- "username": {
- "label": "Username",
- "placeholder": "Enter username"
- },
- "description": {
- "label": "Note",
- "placeholder": "Enter note (optional)"
- },
- "tags": {
- "label": "User Tags",
- "placeholder": "Enter tag (press Enter to add)"
- },
- "providerGroup": {
- "label": "Provider Group",
- "placeholder": "default"
- },
- "allowedClients": {
- "label": "Client Restrictions",
- "description": "Restrict which CLI/IDE clients can use this account. Empty = no restriction.",
- "customLabel": "Custom Client Pattern",
- "customPlaceholder": "Enter pattern (e.g., 'xcode', 'my-ide')"
- },
- "allowedModels": {
- "label": "Model Restrictions",
- "placeholder": "Enter model name or select from dropdown",
- "description": "Restrict which AI models this user can access. Empty = no restriction."
- },
- "enableStatus": {
- "label": "Enable Status",
- "enabledDescription": "Currently enabled. Disabling will prevent this user and their keys from being used.",
- "disabledDescription": "Currently disabled. Enabling will restore normal access for this user and their keys.",
- "confirmDisable": "Confirm Disable",
- "confirmEnable": "Confirm Enable",
- "confirmEnableTitle": "Confirm Enable User",
- "confirmDisableTitle": "Confirm Disable User",
- "confirmEnableDescription": "Enabling will restore normal access for this user and their keys.",
- "confirmDisableDescription": "Disabling will prevent this user and their keys from being used.",
- "cancel": "Cancel",
- "processing": "Processing..."
- }
- },
- "presetClients": {
- "claude-cli": "Claude Code CLI",
- "gemini-cli": "Gemini CLI",
- "factory-cli": "Droid CLI",
- "codex-cli": "Codex CLI"
- }
- },
- "keyEditSection": {
- "sections": {
- "basicInfo": "Basic Information",
- "expireTime": "Expiration Time",
- "limitRules": "Limit Rules",
- "specialFeatures": "Special Features"
- },
- "fields": {
- "keyName": {
- "label": "Key Name",
- "placeholder": "Enter key name"
- },
- "enableStatus": {
- "label": "Enable Status",
- "description": "Disabled keys cannot be used",
- "cannotDisableTooltip": "Cannot disable the last enabled key"
- },
- "balanceQueryPage": {
- "label": "Independent Personal Usage Page",
- "description": "When enabled, this key can access an independent personal usage page",
- "descriptionEnabled": "When enabled, this key will access an independent personal usage page upon login. However, it cannot modify its own key's provider group.",
- "descriptionDisabled": "When disabled, the user cannot access the personal usage page UI. Instead, they will use the restricted Web UI."
- },
- "providerGroup": {
- "label": "Provider Group",
- "placeholder": "Default: default",
- "selectHint": "Select the provider group(s) this key can use (default: default).",
- "editHint": "Provider group cannot be changed for existing keys.",
- "allGroups": "Use all groups",
- "noGroupHint": "default includes providers without groupTag."
- },
- "cacheTtl": {
- "label": "Cache TTL Override",
- "description": "Force Anthropic prompt cache TTL for requests containing cache_control.",
- "options": {
- "inherit": "No override (follow provider/client)",
- "5m": "5m",
- "1h": "1h"
- }
- }
- },
- "limitRules": {
- "title": "Add limit rule",
- "actions": {
- "add": "Add rule",
- "remove": "Remove"
- },
- "daily": {
- "mode": {
- "fixed": "Fixed time reset",
- "rolling": "Rolling window (24h)"
- }
- },
- "overwriteHint": "This type already exists, saving will overwrite the existing value"
- },
- "accessRestrictions": {
- "title": "Access Restrictions",
- "models": "Allowed Models",
- "clients": "Allowed Clients",
- "noRestrictions": "No restrictions",
- "inheritedFromUser": "Inherited from user settings"
- }
- }
- },
- "webhookMigration": {
- "title": "Webhook System Upgrade",
- "description": "We have launched a new Webhook notification system with multi-target delivery, independent configuration, and improved reliability.",
- "step1": {
- "title": "Legacy Webhook Configuration Detected",
- "description": "The system detected that you are using legacy Webhook configuration. The new system offers more powerful features, and we recommend migrating."
- },
- "step2": {
- "title": "Select Platform Type",
- "description": "The following Webhook URLs could not be automatically identified. Please select the platform manually:"
- },
- "platformOptions": {
- "wechat": "WeChat Work",
- "feishu": "Feishu",
- "dingtalk": "DingTalk",
- "telegram": "Telegram",
- "custom": "Custom"
- },
- "migrateButton": "Start Migration",
- "skipButton": "Maybe Later",
- "nextButton": "Next",
- "goToSettingsButton": "Go to Settings",
- "migrating": "Migrating...",
- "success": "Migration Complete",
- "successDescription": "Your Webhook configuration has been successfully migrated to the new system.",
- "error": "Migration Failed",
- "errorGeneric": "Migration failed. Please try again later.",
- "detectedWebhooks": "Detected Webhooks",
- "notificationTypes": {
- "circuit_breaker": "Circuit Breaker Alert",
- "daily_leaderboard": "Daily Leaderboard",
- "cost_alert": "Cost Alert"
- },
- "urlLabel": "Webhook URL",
- "platformLabel": "Platform Type",
- "autoDetected": "Auto-detected",
- "selectPlatform": "Select platform",
- "successStats": "Created {targets} targets, {bindings} bindings"
- }
- }
|