dashboard.json 73 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076
  1. {
  2. "actions": {
  3. "copy": "Copy",
  4. "download": "Download",
  5. "copied": "Copied"
  6. },
  7. "title": {
  8. "costRanking": "Cost Leaderboard",
  9. "costRankingDescription": "View user cost rankings, data updates every 5 minutes",
  10. "usageLogs": "Usage Logs",
  11. "usageLogsDescription": "View API call logs and usage statistics",
  12. "clients": "Clients",
  13. "userAndKeyManagement": "User and Key Management",
  14. "requestMessages": "Request Messages",
  15. "activeSessions": "Active Sessions (Last 5 Minutes)",
  16. "sessionMonitoring": "Session Monitoring",
  17. "sessionMonitoringDescription": "Real-time display of active and inactive sessions (auto-refresh every 3 seconds)",
  18. "inactiveSessions": "Inactive Sessions (Over 5 Minutes, View Only)",
  19. "quotasManagement": "Quotas",
  20. "quotasManagementDescription": "View and manage quotas at all levels",
  21. "usersQuotas": "User Quota Statistics",
  22. "keysQuotas": "Key Quota Statistics",
  23. "providersQuotas": "Provider Quota Statistics",
  24. "filterCriteria": "Filter Criteria",
  25. "filterCriteriaDescription": "Narrow down logs by time, user, provider, and more"
  26. },
  27. "description": {
  28. "viewApiCallLogs": "View API call logs and usage statistics",
  29. "dashboard": "View system statistics and monitoring information",
  30. "quotas": "View and manage quotas at all levels",
  31. "clientInfo": "User-Agent request header",
  32. "requestMessagesDescription": "Message content sent by the client",
  33. "responseBodyDescription": "Complete server response (5-minute TTL)"
  34. },
  35. "overview": {
  36. "title": "Overview",
  37. "totalRequests": "Total Requests",
  38. "totalCost": "Total Cost",
  39. "totalUsers": "Total Users",
  40. "totalProviders": "Total Providers",
  41. "activeUsers": "Active Users",
  42. "activeSessions": "Active Sessions",
  43. "errorRate": "Error Rate",
  44. "avgResponseTime": "Average Response Time"
  45. },
  46. "stats": {
  47. "title": "Statistics",
  48. "requests": "Requests",
  49. "cost": "Cost",
  50. "tokens": "Tokens",
  51. "period": {
  52. "hour": "Last Hour",
  53. "day": "Today",
  54. "week": "This Week",
  55. "month": "This Month"
  56. }
  57. },
  58. "logs": {
  59. "title": "Usage Logs",
  60. "description": "View and analyze API call records",
  61. "filters": {
  62. "user": "User",
  63. "provider": "Provider",
  64. "sessionId": "Session ID",
  65. "searchUser": "Search users...",
  66. "searchProvider": "Search providers...",
  67. "searchSessionId": "Search session IDs...",
  68. "noUserFound": "No matching users found",
  69. "noProviderFound": "No matching providers found",
  70. "noSessionFound": "No matching session IDs found",
  71. "model": "Model",
  72. "endpoint": "Endpoint",
  73. "status": "Status",
  74. "timeRange": "Time Range",
  75. "dateRange": "Date Range",
  76. "startTime": "Start Time",
  77. "endTime": "End Time",
  78. "allUsers": "All Users",
  79. "allKeys": "All Keys",
  80. "selectUserFirst": "Please select a user first",
  81. "allProviders": "All Providers",
  82. "allModels": "All Models",
  83. "allEndpoints": "All Endpoints",
  84. "allStatusCodes": "All Status Codes",
  85. "apiKey": "API Key",
  86. "statusCode": "Status Code",
  87. "minRetryCount": "Retry Count ≥",
  88. "minRetryCountPlaceholder": "Enter minimum retries",
  89. "apply": "Apply Filter",
  90. "reset": "Reset",
  91. "last7days": "7d",
  92. "last30days": "30d",
  93. "customRange": "Custom Range",
  94. "export": "Export",
  95. "exporting": "Exporting...",
  96. "exportSuccess": "Export completed successfully",
  97. "exportError": "Export failed",
  98. "exportPreparing": "Preparing export...",
  99. "exportProgress": "Exported {current} / {total}",
  100. "quickFilters": {
  101. "today": "Today",
  102. "thisWeek": "This Week",
  103. "errorsOnly": "Errors Only",
  104. "showRetries": "With Retries"
  105. },
  106. "activeFilters": {
  107. "title": "Active Filters",
  108. "remove": "Remove filter",
  109. "clearAll": "Clear all"
  110. },
  111. "groups": {
  112. "time": "Time Range",
  113. "timeDesc": "Filter by date and time",
  114. "identity": "Identity",
  115. "identityDesc": "Filter by user and key",
  116. "request": "Request",
  117. "requestDesc": "Filter by provider, model, endpoint",
  118. "status": "Status",
  119. "statusDesc": "Filter by status code and retry"
  120. }
  121. },
  122. "columns": {
  123. "time": "Time",
  124. "user": "User",
  125. "key": "Key",
  126. "sessionId": "Session ID",
  127. "provider": "Provider",
  128. "model": "Billing Model",
  129. "endpoint": "Endpoint",
  130. "inputTokens": "Input",
  131. "outputTokens": "Output",
  132. "tokens": "Tokens",
  133. "cacheWrite": "Cache Write",
  134. "cacheRead": "Cache Read",
  135. "cache": "Cache",
  136. "cost": "Cost",
  137. "duration": "Duration",
  138. "performance": "Perf",
  139. "status": "Status"
  140. },
  141. "stats": {
  142. "title": "Statistics Summary",
  143. "description": "Aggregated statistics for the current filters",
  144. "totalRequests": "Total Requests",
  145. "totalAmount": "Total Consumption",
  146. "totalTokens": "Total Tokens",
  147. "cacheTokens": "Cached Tokens",
  148. "input": "Input",
  149. "output": "Output",
  150. "write": "Write",
  151. "read": "Read",
  152. "loading": "Loading..."
  153. },
  154. "table": {
  155. "noData": "No Data",
  156. "pagination": "Total {total} records, Page {page} / {totalPages}",
  157. "prevPage": "Previous Page",
  158. "nextPage": "Next Page",
  159. "blocked": "Blocked",
  160. "nonBilling": "Non-Billing",
  161. "skipped": "Skipped",
  162. "specialSettings": "Special",
  163. "anthropicEffort": "Effort: {effort}",
  164. "times": "times",
  165. "loadedCount": "Loaded {count} records",
  166. "loadingMore": "Loading more...",
  167. "noMoreData": "All records loaded",
  168. "scrollToTop": "Back to top",
  169. "hideProviderColumn": "Hide Provider Column",
  170. "showProviderColumn": "Show Provider Column",
  171. "columnVisibility": "Column Visibility"
  172. },
  173. "actions": {
  174. "refresh": "Refresh",
  175. "refreshing": "Refreshing...",
  176. "stopAutoRefresh": "Stop Auto-Refresh",
  177. "startAutoRefresh": "Start Auto-Refresh",
  178. "view": "View",
  179. "fullscreen": "Fullscreen",
  180. "exitFullscreen": "Exit Fullscreen"
  181. },
  182. "error": {
  183. "loadFailed": "Load Failed",
  184. "loadKeysFailed": "Failed to load keys"
  185. },
  186. "details": {
  187. "title": "Request Details",
  188. "statusTitle": "Status: {status}",
  189. "inProgress": "In Progress",
  190. "retrying": "Retrying",
  191. "unknown": "Unknown",
  192. "success": "Request completed successfully",
  193. "error": "Request failed, here are the detailed error messages and provider decision chain",
  194. "processing": "Request is in progress, not yet completed",
  195. "tabs": {
  196. "summary": "Summary",
  197. "logicTrace": "Logic Trace",
  198. "performance": "Performance",
  199. "metadata": "Metadata"
  200. },
  201. "summary": {
  202. "keyMetrics": "Key Metrics",
  203. "totalCost": "Total Cost",
  204. "totalTokens": "Total Tokens",
  205. "duration": "Duration",
  206. "outputRate": "Output Rate",
  207. "viewFullError": "View full error",
  208. "viewSession": "View Session"
  209. },
  210. "specialSettings": {
  211. "title": "Special settings"
  212. },
  213. "skipped": {
  214. "title": "Skipped",
  215. "reason": "Reason",
  216. "warmup": "Warmup Fast Response (CCH)",
  217. "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."
  218. },
  219. "blocked": {
  220. "title": "Blocking Information",
  221. "type": "Blocking Type",
  222. "sensitiveWord": "Sensitive Word Blocking",
  223. "word": "Sensitive Word",
  224. "matchType": "Match Type",
  225. "matchTypeContains": "Contains Match",
  226. "matchTypeExact": "Exact Match",
  227. "matchTypeRegex": "Regular Expression",
  228. "matchedText": "Matched Content"
  229. },
  230. "sessionId": "Session ID",
  231. "messagesCount": "Message Count",
  232. "messagesLabel": "Messages",
  233. "messagesUnit": "items",
  234. "clientInfo": "Client Info",
  235. "modelRedirect": {
  236. "title": "Model Redirection",
  237. "requestModel": "Requested Model",
  238. "actualModel": "Actual Call",
  239. "billing": "Billing Description",
  240. "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.",
  241. "billingModel": "Billing Model",
  242. "actualModelTooltip": "Actual Model: {model}",
  243. "originalModelTooltip": "Original Model: {model}",
  244. "billingDescription_original": "Current billing mode: Using original model before redirection ({original}) for billing",
  245. "billingDescription_redirected": "Current billing mode: Using actual model after redirection ({current}) for billing",
  246. "billingOriginal": "billing: original",
  247. "billingRedirected": "billing: redirected"
  248. },
  249. "errorMessage": "Error Message",
  250. "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.",
  251. "fake200DetectedReason": "Detected reason: {reason}",
  252. "fake200Reasons": {
  253. "emptyBody": "Empty response body",
  254. "htmlBody": "HTML document returned (likely an error page)",
  255. "jsonErrorNonEmpty": "JSON has a non-empty `error` field",
  256. "jsonErrorMessageNonEmpty": "JSON has a non-empty `error.message`",
  257. "jsonMessageKeywordMatch": "JSON `message` contains the word \"error\" (heuristic)",
  258. "unknown": "Response body indicates an error"
  259. },
  260. "statusCodeInferredBadge": "Inferred",
  261. "statusCodeInferredTooltip": "This status code is inferred from response body content (e.g., fake 200) and may differ from the upstream HTTP status.",
  262. "statusCodeInferredSuffix": "(inferred)",
  263. "filteredProviders": "Filtered Providers",
  264. "providerChain": {
  265. "title": "Provider Decision Chain Timeline",
  266. "totalDuration": "Total Duration: {duration}ms"
  267. },
  268. "noError": {
  269. "processing": "Request is being processed, awaiting response...",
  270. "success": "Request successful, no error message",
  271. "default": "No detailed error message available"
  272. },
  273. "clickStatusCode": "Click status code to view full timeline",
  274. "viewDetails": "View Details",
  275. "reasons": {
  276. "rateLimited": "Provider Cost Limit",
  277. "circuitOpen": "Circuit Breaker Open"
  278. },
  279. "billingDetails": {
  280. "title": "Billing Details",
  281. "input": "Input",
  282. "output": "Output",
  283. "cacheWrite5m": "Cache Write (5m)",
  284. "cacheWrite1h": "Cache Write (1h)",
  285. "cacheRead": "Cache Read",
  286. "cacheTtl": "Cache TTL",
  287. "cacheTtlSwapped": "Billing TTL (swapped)",
  288. "multiplier": "Provider Multiplier",
  289. "totalCost": "Total Cost",
  290. "fast": "fast",
  291. "fastPriority": "Priority service tier (fast mode)",
  292. "context1m": "1M Context",
  293. "context1mEnabled": "1M context window enabled",
  294. "pricingProvider": "Pricing provider",
  295. "pricingSourceLabel": "Pricing source",
  296. "pricingSource": {
  297. "local_manual": "Local manual pricing",
  298. "cloud_exact": "Exact cloud provider pricing",
  299. "cloud_model_fallback": "Fallback model provider pricing",
  300. "priority_fallback": "Priority provider fallback pricing",
  301. "single_provider_top_level": "Top-level single-provider pricing",
  302. "official_fallback": "Official pricing"
  303. }
  304. },
  305. "performance": {
  306. "title": "Performance",
  307. "ttfb": "TTFB",
  308. "duration": "Total Duration",
  309. "outputRate": "Output Rate"
  310. },
  311. "performanceTab": {
  312. "noPerformanceData": "No performance data available",
  313. "ttfbGauge": "Time to First Byte",
  314. "outputRateGauge": "Output Rate",
  315. "latencyBreakdown": "Latency Breakdown",
  316. "generationTime": "Generation Time",
  317. "assessment": {
  318. "excellent": "Excellent",
  319. "good": "Good",
  320. "warning": "Warning",
  321. "poor": "Poor"
  322. },
  323. "thresholds": {
  324. "ttfbGood": "TTFB < 1s",
  325. "ttfbWarning": "TTFB 1-2s",
  326. "ttfbPoor": "TTFB > 3s"
  327. }
  328. },
  329. "metadata": {
  330. "noMetadata": "No metadata available",
  331. "sessionInfo": "Session Info",
  332. "clientInfo": "Client Info",
  333. "billingInfo": "Billing Info",
  334. "technicalTimeline": "Technical Timeline",
  335. "copyTimeline": "Copy Timeline"
  336. },
  337. "effort": {
  338. "label": "Effort",
  339. "overridden": "Overridden by provider"
  340. },
  341. "logicTrace": {
  342. "title": "Decision Chain",
  343. "noDecisionData": "No decision data available",
  344. "providersCount": "{count} providers",
  345. "healthyCount": "{count} healthy",
  346. "initialSelection": "Initial Selection",
  347. "healthCheck": "Health Check",
  348. "prioritySelection": "Priority Selection",
  349. "attemptProvider": "Attempt: {provider}",
  350. "retryAttempt": "Retry #{number}",
  351. "httpStatus": "HTTP {code}{inferredSuffix}",
  352. "sessionReuse": "Session Reuse",
  353. "sessionReuseDesc": "Reusing provider from session cache",
  354. "sessionReuseTitle": "Session Binding",
  355. "sessionReuseSelection": "Session Reuse Selection",
  356. "sessionReuseSelectionDesc": "Provider selected from session cache",
  357. "sessionInfo": "Session Information",
  358. "sessionIdLabel": "Session ID",
  359. "requestSequence": "Request Sequence",
  360. "sessionAge": "Session Age",
  361. "reusedProvider": "Reused Provider",
  362. "executeRequest": "Execute Request",
  363. "cacheOptimizationHint": "Session reuse optimizes performance by maintaining provider affinity within the same conversation, reducing selection overhead and improving cache hit rates.",
  364. "originDecisionTitle": "Original Selection Decision",
  365. "originDecisionDesc": "How this provider was initially chosen for this session",
  366. "originDecisionLoading": "Loading original decision...",
  367. "originDecisionUnavailable": "Original decision record unavailable",
  368. "originDecisionExpand": "View original selection"
  369. }
  370. },
  371. "providerChain": {
  372. "decisionChain": "Provider Decision Chain",
  373. "clickItemForDetails": "Click a step to view details"
  374. },
  375. "modelRedirect": {
  376. "redirected": "Redirected",
  377. "targetModel": "Target Model"
  378. },
  379. "statusCodes": {
  380. "200": "200 (Success)",
  381. "400": "400 (Bad Request)",
  382. "401": "401 (Unauthorized)",
  383. "429": "429 (Rate Limited)",
  384. "500": "500 (Server Error)",
  385. "not200": "Non-200 (errors/blocked)"
  386. },
  387. "billingDetails": {
  388. "input": "Input",
  389. "output": "Output",
  390. "cacheWrite5m": "Cache Write (5m)",
  391. "cacheWrite1h": "Cache Write (1h)",
  392. "cacheRead": "Cache Read",
  393. "cacheTtl": "Cache TTL",
  394. "cacheTtlSwapped": "Billing TTL (swapped)",
  395. "multiplier": "Provider Multiplier",
  396. "totalCost": "Total Cost",
  397. "fast": "fast",
  398. "fastPriority": "Priority service tier (fast mode)",
  399. "context1m": "1M Context",
  400. "context1mEnabled": "1M context window enabled",
  401. "pricingProvider": "Pricing provider",
  402. "pricingSourceLabel": "Pricing source",
  403. "pricingSource": {
  404. "local_manual": "Local manual pricing",
  405. "cloud_exact": "Exact cloud provider pricing",
  406. "cloud_model_fallback": "Fallback model provider pricing",
  407. "priority_fallback": "Priority provider fallback pricing",
  408. "single_provider_top_level": "Top-level single-provider pricing",
  409. "official_fallback": "Official pricing"
  410. }
  411. }
  412. },
  413. "leaderboard": {
  414. "title": "Cost Leaderboard",
  415. "description": "View cost statistics rankings for users and keys",
  416. "todayTitle": "Today's Leaderboard",
  417. "viewAll": "View All",
  418. "userRankings": "User Rankings",
  419. "providerRankings": "Provider Rankings",
  420. "modelRankings": "Model Rankings",
  421. "noData": "No data for today",
  422. "requests": "requests",
  423. "tokens": "tokens",
  424. "tabs": {
  425. "users": "User Rankings",
  426. "keys": "Key Rankings",
  427. "userRanking": "User Rankings",
  428. "providerRanking": "Provider Rankings",
  429. "providerCacheHitRateRanking": "Provider Cache Hit Rate",
  430. "modelRanking": "Model Rankings",
  431. "dailyRanking": "Today",
  432. "weeklyRanking": "This Week",
  433. "monthlyRanking": "This Month",
  434. "allTimeRanking": "All Time"
  435. },
  436. "dateRange": {
  437. "to": "to",
  438. "prevPeriod": "Previous period",
  439. "nextPeriod": "Next period",
  440. "customRange": "Custom date range"
  441. },
  442. "columns": {
  443. "rank": "Rank",
  444. "name": "Name",
  445. "totalCost": "Total Cost",
  446. "totalRequests": "Total Requests",
  447. "avgCost": "Average Cost",
  448. "lastActive": "Last Active",
  449. "user": "User",
  450. "requests": "Requests",
  451. "tokens": "Tokens",
  452. "consumedAmount": "Consumed Amount",
  453. "provider": "Provider",
  454. "model": "Model",
  455. "cost": "Cost",
  456. "cacheHitRequests": "Cache-eligible Requests",
  457. "cacheHitRate": "Cache Hit Rate",
  458. "cacheReadTokens": "Cache Read Tokens",
  459. "totalTokens": "Total Tokens",
  460. "cacheCreationConsumedAmount": "Cache Creation Spend",
  461. "totalConsumedAmount": "Total Spend",
  462. "successRate": "Success Rate",
  463. "avgResponseTime": "Avg Response Time",
  464. "avgTtfbMs": "Avg TTFB",
  465. "avgTokensPerSecond": "Avg tok/s",
  466. "avgCostPerRequest": "Avg Cost/Req",
  467. "avgCostPerMillionTokens": "Avg Cost/1M Tokens",
  468. "unknownModel": "Unknown"
  469. },
  470. "expandModelStats": "Expand model details",
  471. "collapseModelStats": "Collapse model details",
  472. "states": {
  473. "loading": "Loading...",
  474. "noData": "No data available",
  475. "todayNoData": "No data available for today",
  476. "weekNoData": "No data available for this week",
  477. "monthNoData": "No data available for this month",
  478. "fetchFailed": "Failed to fetch leaderboard data"
  479. },
  480. "permission": {
  481. "title": "Permission Required",
  482. "restricted": "Access Restricted",
  483. "description": "The leaderboard feature requires administrators to enable the \"Allow Global Usage View\" permission.",
  484. "adminAction": "Enable this permission.",
  485. "userAction": "Please contact an administrator to enable this permission.",
  486. "systemSettings": "System Settings"
  487. },
  488. "filters": {
  489. "userTagsPlaceholder": "Filter by user tags...",
  490. "userGroupsPlaceholder": "Filter by user groups..."
  491. },
  492. "userInsights": {
  493. "title": "User Insights",
  494. "backToLeaderboard": "Back to Leaderboard",
  495. "overview": "Overview",
  496. "keyTrend": "Key Usage Trend",
  497. "modelBreakdown": "Model Breakdown",
  498. "requests": "Requests",
  499. "cost": "Cost",
  500. "avgResponseTime": "Avg Response Time",
  501. "errorRate": "Error Rate",
  502. "timeRange": {
  503. "today": "Today",
  504. "7days": "Last 7 Days",
  505. "30days": "Last 30 Days",
  506. "thisMonth": "This Month"
  507. },
  508. "unknownModel": "Unknown Model",
  509. "noData": "No data available",
  510. "dateRange": "Date Range",
  511. "allTime": "All Time",
  512. "providerBreakdown": "Provider Breakdown",
  513. "unknownProvider": "Unknown Provider",
  514. "apiKey": "API Key",
  515. "provider": "Provider",
  516. "model": "Model",
  517. "allKeys": "All Keys",
  518. "allProviders": "All Providers",
  519. "allModels": "All Models",
  520. "dimensions": "Dimensions",
  521. "filters": "Filters",
  522. "loadError": "Failed to load data"
  523. }
  524. },
  525. "sessions": {
  526. "title": "Active Sessions",
  527. "description": "Monitor current active API sessions in real-time",
  528. "monitoring": "Session Monitoring",
  529. "monitoringDescription": "Real-time display of active and inactive sessions (auto-refresh every 3 seconds)",
  530. "activeSessions": "Active Sessions (Last 5 Minutes)",
  531. "inactiveSessions": "Inactive Sessions (Over 5 Minutes, View Only)",
  532. "columns": {
  533. "sessionId": "Session ID",
  534. "user": "User",
  535. "key": "Key",
  536. "provider": "Provider",
  537. "model": "Model",
  538. "startTime": "Start Time",
  539. "lastActivity": "Last Activity",
  540. "requestCount": "Requests",
  541. "totalInput": "Total Input",
  542. "totalOutput": "Total Output",
  543. "totalCost": "Total Cost",
  544. "totalDuration": "Total Duration",
  545. "status": "Status",
  546. "actions": "Actions"
  547. },
  548. "table": {
  549. "count": "Total {count} {type} Sessions",
  550. "active": "Active",
  551. "inactive": "Inactive",
  552. "notCountedInConcurrency": "(Not counted in concurrency)",
  553. "refreshing": "Refreshing...",
  554. "noActiveSessions": "No active sessions"
  555. },
  556. "pagination": {
  557. "total": "total"
  558. },
  559. "details": {
  560. "title": "Session Messages",
  561. "messages": "Messages",
  562. "info": "Session Info",
  563. "timeline": "Timeline",
  564. "overview": "Session Overview",
  565. "overviewDescription": "Aggregated statistics",
  566. "providersAndModels": "Providers & Models",
  567. "providersAndModelsDescription": "Providers and models used",
  568. "tokenUsage": "Token Usage (Total)",
  569. "tokenUsageDescription": "Cumulative statistics for all requests",
  570. "costInfo": "Cost Information (Total)",
  571. "costInfoDescription": "Cumulative cost for all requests",
  572. "totalRequests": "Total Requests",
  573. "firstRequest": "First Request",
  574. "lastRequest": "Last Request",
  575. "totalDuration": "Total Duration",
  576. "totalInput": "Total Input",
  577. "totalOutput": "Total Output",
  578. "cacheCreation": "Cache Creation",
  579. "cacheTtlMixed": "Mixed",
  580. "cacheRead": "Cache Read",
  581. "total": "Total",
  582. "totalFee": "Total Fee",
  583. "providers": "Providers",
  584. "models": "Models",
  585. "noDetailedData": "No detailed data available",
  586. "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.",
  587. "clientInfo": "Client Info",
  588. "requestHeaders": "Request Headers",
  589. "requestBody": "Request Body",
  590. "requestMessages": "Request Messages",
  591. "specialSettings": "Special",
  592. "requestMessagesDescription": "Message content sent by the client",
  593. "responseHeaders": "Response Headers",
  594. "responseBody": "Response Body",
  595. "responseBodyDescription": "Complete server response (5-minute TTL)",
  596. "noHeaders": "No data",
  597. "noData": "No Data",
  598. "prevRequest": "Previous",
  599. "nextRequest": "Next"
  600. },
  601. "actions": {
  602. "back": "Back",
  603. "view": "View",
  604. "copy": "Copy",
  605. "download": "Download",
  606. "copyMessages": "Copy Request (Headers + Body)",
  607. "downloadMessages": "Download Request (Headers + Body)",
  608. "copied": "Copied",
  609. "copyResponse": "Copy Response",
  610. "terminate": "Terminate",
  611. "terminateTitle": "Terminate Session",
  612. "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.",
  613. "sessionIdLabel": "Session ID: {sessionId}",
  614. "cancel": "Cancel",
  615. "confirmTerminate": "Confirm Termination",
  616. "terminating": "Terminating...",
  617. "terminateSuccess": "Session terminated successfully",
  618. "terminateFailed": "Failed to terminate session",
  619. "terminateSelected": "Terminate Selected",
  620. "selectedCount": "{count} selected",
  621. "selectAll": "Select All",
  622. "selectSessionLabel": "Select session",
  623. "multiSelect": "Multi Select",
  624. "cancelMultiSelect": "Cancel",
  625. "terminateSessionTitle": "Terminate Session",
  626. "terminateSessionDescription": "Are you sure you want to terminate this session? This action cannot be undone.",
  627. "batchTerminateSuccess": "Terminated {count} session(s)",
  628. "batchTerminatePartial": "Unauthorized: {unauthorized} · Missing: {missing}",
  629. "batchTerminateAllowedFailed": "Failed to terminate {count} authorized session(s)",
  630. "batchTerminateNone": "No sessions were terminated",
  631. "noSelection": "Please select at least one session"
  632. },
  633. "codeDisplay": {
  634. "raw": "Raw",
  635. "pretty": "Pretty",
  636. "searchPlaceholder": "Search",
  637. "expand": "Expand",
  638. "collapse": "Collapse",
  639. "themeAuto": "Auto",
  640. "themeLight": "Light",
  641. "themeDark": "Dark",
  642. "noMatches": "No matches",
  643. "onlyMatches": "Only matches",
  644. "showAll": "Show all",
  645. "prevPage": "Prev",
  646. "nextPage": "Next",
  647. "pageInfo": "Page {page} / {total}",
  648. "sseEvent": "Event",
  649. "sseData": "Data",
  650. "hardLimit": {
  651. "title": "Content too large",
  652. "size": "Size: {sizeMB} MB ({sizeBytes} bytes)",
  653. "maximum": "Maximum allowed: {maxSizeMB} MB or {maxLines} lines",
  654. "hint": "Please download the file to view the full content.",
  655. "download": "Download"
  656. }
  657. },
  658. "status": {
  659. "loading": "Loading...",
  660. "loadError": "Load failed",
  661. "fetchFailed": "Fetch Failed",
  662. "unknownError": "Unknown Error",
  663. "storageNotEnabled": "Not Stored",
  664. "storageNotEnabledHint": "Tip: Check REDIS_URL and ENABLE_RATE_LIMIT=true (session details cache). To store unredacted messages, set STORE_SESSION_MESSAGES=true."
  665. },
  666. "errors": {
  667. "copyFailed": "Copy Failed"
  668. },
  669. "requestList": {
  670. "title": "Requests",
  671. "noRequests": "No requests found",
  672. "fetchFailed": "Failed to fetch requests",
  673. "unknownError": "Unknown error occurred",
  674. "prev": "Prev",
  675. "next": "Next",
  676. "orderAsc": "Switch to ascending order (oldest first)",
  677. "orderDesc": "Switch to descending order (newest first)"
  678. },
  679. "back": "Back",
  680. "loadingError": "Loading failed"
  681. },
  682. "quotas": {
  683. "title": "Quota Management",
  684. "description": "Manage user, key, and provider usage quotas",
  685. "tabs": {
  686. "overview": "Overview",
  687. "users": "User Quotas",
  688. "keys": "Key Quotas",
  689. "providers": "Provider Quotas"
  690. },
  691. "columns": {
  692. "name": "Name",
  693. "limit": "Limit",
  694. "used": "Used",
  695. "remaining": "Remaining",
  696. "resetTime": "Reset Time",
  697. "status": "Status"
  698. },
  699. "labels": {
  700. "byName": "By Name",
  701. "byUsageRate": "By Usage Rate",
  702. "all": "All",
  703. "warning": "Near Limit (>60%)",
  704. "exceeded": "Exceeded (≥100%)"
  705. },
  706. "users": {
  707. "title": "User Quota Statistics",
  708. "totalUsers": "Total {count} users"
  709. },
  710. "keys": {
  711. "title": "Key Quota Statistics",
  712. "totalKeysInfo": "Total {userCount} users, {keyCount} keys",
  713. "setKeyQuota": "Set Key Quota",
  714. "setUserQuota": "Set User Quota",
  715. "onlyKeyQuota": "Key Quota Only",
  716. "onlyUserQuota": "User Quota Only",
  717. "success": "User quota set successfully"
  718. },
  719. "providers": {
  720. "title": "Provider Quota Statistics",
  721. "totalProviders": "Total {count} providers"
  722. }
  723. },
  724. "labels": {
  725. "byName": "By Name",
  726. "byUsageRate": "By Usage Rate"
  727. },
  728. "nav": {
  729. "mobileMenuTitle": "Navigation Menu",
  730. "dashboard": "Dashboard",
  731. "usageLogs": "Usage Logs",
  732. "leaderboard": "Leaderboard",
  733. "availability": "Availability",
  734. "myQuota": "My Quota",
  735. "quotasManagement": "Quotas",
  736. "userManagement": "Users",
  737. "providers": "Providers",
  738. "documentation": "Docs",
  739. "systemSettings": "Settings",
  740. "feedback": "Feedback",
  741. "login": "Login",
  742. "logout": "Logout"
  743. },
  744. "statistics": {
  745. "title": "Usage Statistics",
  746. "cost": "Consumption Amount",
  747. "calls": "API Calls",
  748. "totalCost": "Total Consumption Amount",
  749. "totalCalls": "Total API Calls",
  750. "timeRange": {
  751. "today": "Today",
  752. "todayDescription": "Today's usage",
  753. "7days": "Last 7 Days",
  754. "7daysDescription": "Usage for the last 7 days",
  755. "30days": "Last 30 Days",
  756. "30daysDescription": "Usage for the last 30 days",
  757. "thisMonth": "This Month",
  758. "thisMonthDescription": "Usage for this month",
  759. "default": "Usage"
  760. },
  761. "mode": {
  762. "keys": "Only display usage statistics for your keys",
  763. "mixed": "Display your key details and aggregated data from other users",
  764. "users": "Display usage statistics for all users"
  765. },
  766. "legend": {
  767. "selectAll": "Select All",
  768. "deselectAll": "Clear",
  769. "selected": "Selected"
  770. },
  771. "chartMode": {
  772. "label": "Display Mode",
  773. "overlay": "Overlay",
  774. "stacked": "Stacked"
  775. },
  776. "states": {
  777. "noData": "No statistics data available",
  778. "fetchFailed": "Failed to fetch statistics"
  779. },
  780. "othersAggregate": "Other Users"
  781. },
  782. "errors": {
  783. "fetchSystemSettingsFailed": "Failed to fetch system settings",
  784. "fetchFailed": "Fetch failed",
  785. "fetchSessionListFailed": "Failed to fetch session list"
  786. },
  787. "keyList": {
  788. "columns": {
  789. "name": "Name",
  790. "key": "Key",
  791. "todayCalls": "Today's Calls",
  792. "todayCost": "Today's Cost",
  793. "lastUsed": "Last Used",
  794. "actions": "Actions"
  795. },
  796. "detailsButton": "Details",
  797. "modelStats": "Model Statistics",
  798. "modelStatsColumns": {
  799. "model": "Model",
  800. "calls": "Calls",
  801. "cost": "Cost"
  802. },
  803. "limitUsage": "Limit Usage",
  804. "copyKeyTooltip": "Copy full key",
  805. "showKeyTooltip": "Show full key",
  806. "hideKeyTooltip": "Hide key",
  807. "copyFailed": "Copy failed:",
  808. "timesUnit": "times",
  809. "provider": "Provider",
  810. "neverUsed": "Never used",
  811. "viewLogsTooltip": "View detailed logs",
  812. "logsButton": "Logs",
  813. "emptyState": {
  814. "title": "No Keys",
  815. "description": "Click the \"Add Key\" button in the top right corner to add a key"
  816. }
  817. },
  818. "userList": {
  819. "title": "User List",
  820. "badge": "{count} Keys",
  821. "activeKeys": "Active Keys",
  822. "totalKeys": "Total Keys",
  823. "expiresAt": "Expiration",
  824. "status": {
  825. "active": "Active",
  826. "expiringSoon": "Expiring Soon",
  827. "expired": "Expired",
  828. "disabled": "Disabled"
  829. },
  830. "actions": {
  831. "renew": "Renew",
  832. "renew30d": "Renew for 30 days",
  833. "renew90d": "Renew for 90 days",
  834. "renew1y": "Renew for 1 year",
  835. "renewCustom": "Custom...",
  836. "customRenewTitle": "Custom Renewal",
  837. "customRenewDescription": "Set a new expiration date for user {userName}",
  838. "expirationDate": "Expiration Date",
  839. "enableOnRenew": "Enable user on renewal",
  840. "cancel": "Cancel",
  841. "confirm": "Confirm",
  842. "customPrompt": "Enter a new expiry date (YYYY-MM-DD). Leave empty to cancel.",
  843. "invalidDate": "Please enter a valid date",
  844. "enable": "Enable",
  845. "disable": "Disable",
  846. "success": "Operation succeeded",
  847. "failed": "Operation failed, please try again"
  848. },
  849. "emptyState": {
  850. "title": "No Users",
  851. "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!",
  852. "action": "Create Your First User"
  853. },
  854. "addUser": "Add User"
  855. },
  856. "keyListHeader": {
  857. "todayUsage": "Today's Usage",
  858. "userStatus": {
  859. "disabled": "Disabled",
  860. "expired": "Expired",
  861. "expiringSoon": "Expiring soon",
  862. "active": "Enabled"
  863. },
  864. "allowedModels": {
  865. "label": "Allowed Models",
  866. "noRestrictions": "Allowed Models: No restrictions"
  867. },
  868. "expiresAt": "Expires",
  869. "proxyStatus": {
  870. "loading": "Loading proxy status",
  871. "fetchFailed": "Failed to fetch proxy status",
  872. "noStatus": "No proxy status",
  873. "activeRequests": "Active Requests",
  874. "lastRequest": "Last Request",
  875. "noRecord": "No record",
  876. "timeAgo": {
  877. "justNow": "Just now",
  878. "secondsAgo": "{count}s ago",
  879. "minutesAgo": "{count} min ago",
  880. "hoursAgo": "{count}h ago",
  881. "daysAgo": "{count}d ago"
  882. }
  883. },
  884. "addKey": "Add Key",
  885. "keyCreatedDialog": {
  886. "title": "Key Created Successfully",
  887. "description": "Your API key has been created successfully. Please copy and save it securely, as it will only be displayed once.",
  888. "apiKeyLabel": "API Key",
  889. "warningText": "Please copy and save before closing. You will not be able to view this key again after closing.",
  890. "httpWarningText": "HTTP access detected. Browser restrictions prevent clipboard access. Click the eye icon to reveal the key and copy manually.",
  891. "copyTooltip": "Copy to clipboard",
  892. "showTooltip": "Show full key",
  893. "hideTooltip": "Hide key",
  894. "closeButton": "Close"
  895. },
  896. "allowedClients": {
  897. "label": "Clients allowed",
  898. "noRestrictions": "Clients allowed: no restrictions"
  899. }
  900. },
  901. "keyLimitUsage": {
  902. "loading": "Loading...",
  903. "error": "Fetch failed",
  904. "networkError": "Network error",
  905. "cost5h": "5-Hour Cost",
  906. "costDaily": "Daily Cost",
  907. "costWeekly": "Weekly Cost",
  908. "costMonthly": "Monthly Cost",
  909. "costTotal": "Total Cost",
  910. "concurrentSessions": "Concurrent Sessions",
  911. "noLimit": "No quota limits"
  912. },
  913. "addKeyForm": {
  914. "title": "Add Key",
  915. "description": "Create a new API key for the current user. The key value will be auto-generated.",
  916. "submitText": "Create Key",
  917. "loadingText": "Creating...",
  918. "keyName": {
  919. "label": "Key Name",
  920. "placeholder": "Enter key name"
  921. },
  922. "expiresAt": {
  923. "label": "Expiration Time",
  924. "placeholder": "Select expiration time",
  925. "description": "Leave blank for never expires"
  926. },
  927. "canLoginWebUi": {
  928. "label": "Allow Web UI Login",
  929. "description": "When disabled, this key can only be used for API calls and cannot login to the admin panel"
  930. },
  931. "limit5hUsd": {
  932. "label": "5-Hour Cost Limit (USD)",
  933. "placeholder": "Leave blank for unlimited",
  934. "description": "Maximum cost within 5 hours",
  935. "descriptionWithUserLimit": "Maximum cost within 5 hours (User limit: {limit})"
  936. },
  937. "limitDailyUsd": {
  938. "label": "Daily Cost Limit (USD)",
  939. "placeholder": "Leave blank for unlimited",
  940. "description": "Maximum cost per day"
  941. },
  942. "dailyResetMode": {
  943. "label": "Daily Reset Mode",
  944. "options": {
  945. "fixed": "Fixed Time Reset",
  946. "rolling": "Rolling Window (24h)"
  947. },
  948. "desc": {
  949. "fixed": "Reset quota at a specific time each day",
  950. "rolling": "24-hour rolling window from first request"
  951. }
  952. },
  953. "dailyResetTime": {
  954. "label": "Daily Reset Time",
  955. "placeholder": "HH:mm",
  956. "description": "When the daily limit resets (uses system timezone)"
  957. },
  958. "limitWeeklyUsd": {
  959. "label": "Weekly Cost Limit (USD)",
  960. "placeholder": "Leave blank for unlimited",
  961. "description": "Maximum cost per week",
  962. "descriptionWithUserLimit": "Maximum cost per week (User limit: {limit})"
  963. },
  964. "limitMonthlyUsd": {
  965. "label": "Monthly Cost Limit (USD)",
  966. "placeholder": "Leave blank for unlimited",
  967. "description": "Maximum cost per month",
  968. "descriptionWithUserLimit": "Maximum cost per month (User limit: {limit})"
  969. },
  970. "limitTotalUsd": {
  971. "label": "Total Cost Limit (USD)",
  972. "placeholder": "Leave blank for unlimited",
  973. "description": "Maximum cumulative spending (no reset)",
  974. "descriptionWithUserLimit": "Cannot exceed user total limit ({limit})"
  975. },
  976. "limitConcurrentSessions": {
  977. "label": "Concurrent Session Limit",
  978. "placeholder": "0 means unlimited",
  979. "description": "Number of simultaneous conversations",
  980. "descriptionWithUserLimit": "Maximum sessions (User limit: {limit})"
  981. },
  982. "providerGroup": {
  983. "label": "Provider Group",
  984. "placeholder": "Enter provider group tags, press Enter to add",
  985. "description": "Provider groups for this key (default: default).",
  986. "defaultDescription": "default includes providers without groupTag.",
  987. "descriptionWithUserGroup": "Provider groups for this key (user groups: {group}; default: default)."
  988. },
  989. "cacheTtl": {
  990. "label": "Cache TTL Override",
  991. "description": "Force Anthropic prompt cache TTL for requests containing cache_control.",
  992. "options": {
  993. "inherit": "No override (follow provider/client)",
  994. "5m": "5m",
  995. "1h": "1h"
  996. }
  997. },
  998. "successTitle": "Key Created Successfully",
  999. "successDescription": "Your API key has been created successfully.",
  1000. "generatedKey": {
  1001. "label": "Generated Key",
  1002. "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."
  1003. },
  1004. "errors": {
  1005. "userIdMissing": "User ID does not exist",
  1006. "createFailed": "Failed to create, please try again later",
  1007. "noKeyReturned": "Created successfully but key was not returned"
  1008. }
  1009. },
  1010. "userForm": {
  1011. "title": {
  1012. "add": "Add User",
  1013. "edit": "Edit User"
  1014. },
  1015. "description": {
  1016. "add": "Create a new user. The system will automatically generate a default key.",
  1017. "edit": "Modify user's basic information."
  1018. },
  1019. "submitText": {
  1020. "add": "Create User",
  1021. "edit": "Save Changes"
  1022. },
  1023. "loadingText": {
  1024. "add": "Creating...",
  1025. "edit": "Saving..."
  1026. },
  1027. "username": {
  1028. "label": "Username",
  1029. "placeholder": "Enter username"
  1030. },
  1031. "note": {
  1032. "label": "Note",
  1033. "placeholder": "Enter note (optional)",
  1034. "description": "Used to describe the user's purpose or notes"
  1035. },
  1036. "providerGroup": {
  1037. "label": "Provider Group",
  1038. "placeholder": "e.g., default or premium,economy",
  1039. "description": "User provider groups (default: default). Providers without groupTag belong to default."
  1040. },
  1041. "tags": {
  1042. "label": "User Tags",
  1043. "placeholder": "Enter tag (press Enter to add)",
  1044. "description": "Add tags for categorization and filtering (max 20 tags, 32 characters each)"
  1045. },
  1046. "rpm": {
  1047. "label": "RPM Limit",
  1048. "placeholder": "Requests per minute limit",
  1049. "description": "Default: {default}, Range: 1-10000"
  1050. },
  1051. "dailyQuota": {
  1052. "label": "Daily Quota",
  1053. "placeholder": "Daily consumption quota limit",
  1054. "helperText": "Set to 0 for unlimited",
  1055. "description": "Default: ${default}, Range: $0.01-$1000"
  1056. },
  1057. "limit5hUsd": {
  1058. "label": "5-Hour Quota (USD)",
  1059. "placeholder": "Leave empty for unlimited",
  1060. "description": "Maximum spending in 5 hours"
  1061. },
  1062. "limitWeeklyUsd": {
  1063. "label": "Weekly Quota (USD)",
  1064. "placeholder": "Leave empty for unlimited",
  1065. "description": "Maximum weekly spending"
  1066. },
  1067. "limitMonthlyUsd": {
  1068. "label": "Monthly Quota (USD)",
  1069. "placeholder": "Leave empty for unlimited",
  1070. "description": "Maximum monthly spending"
  1071. },
  1072. "limitTotalUsd": {
  1073. "label": "Total Quota (USD)",
  1074. "placeholder": "Leave empty for unlimited",
  1075. "description": "Maximum lifetime spending"
  1076. },
  1077. "limitConcurrentSessions": {
  1078. "label": "Concurrent Sessions Limit",
  1079. "placeholder": "0 means unlimited",
  1080. "description": "Number of simultaneous conversations"
  1081. },
  1082. "isEnabled": {
  1083. "label": "Enable User",
  1084. "description": "Disabled users cannot access the API"
  1085. },
  1086. "expiresAt": {
  1087. "label": "Expiration Date",
  1088. "placeholder": "Leave empty for never expires",
  1089. "description": "User will be automatically disabled after expiration",
  1090. "pastWarning": "Selected date is in the past. The user will expire and be disabled immediately after saving."
  1091. },
  1092. "allowedClients": {
  1093. "label": "Allowed Clients",
  1094. "description": "Restrict which CLI/IDE clients can use this account. Leave empty for no restrictions.",
  1095. "customLabel": "Custom Client Patterns",
  1096. "customPlaceholder": "Enter pattern (e.g., 'my-ide', 'codex-*')"
  1097. },
  1098. "allowedModels": {
  1099. "label": "Allowed Models",
  1100. "placeholder": "Enter model name (press Enter to add)",
  1101. "description": "Restrict this user to specific AI models. Leave empty for no restrictions (max 50 models, 64 chars each)"
  1102. }
  1103. },
  1104. "deleteKeyConfirm": {
  1105. "title": "Confirm Delete Key",
  1106. "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.",
  1107. "cancel": "Cancel",
  1108. "confirm": "Confirm Delete",
  1109. "confirmLoading": "Deleting...",
  1110. "errors": {
  1111. "deleteFailed": "Delete failed",
  1112. "retryError": "Delete failed, please try again later"
  1113. }
  1114. },
  1115. "keyActions": {
  1116. "edit": "Edit",
  1117. "delete": "Delete",
  1118. "editAriaLabel": "Edit key",
  1119. "deleteAriaLabel": "Delete key"
  1120. },
  1121. "userActions": {
  1122. "edit": "Edit user",
  1123. "delete": "Delete user",
  1124. "editAriaLabel": "Edit user",
  1125. "deleteAriaLabel": "Delete user"
  1126. },
  1127. "availability": {
  1128. "title": "Provider Availability Monitor",
  1129. "description": "Real-time monitoring of provider availability and performance metrics",
  1130. "nav": "Availability Monitor",
  1131. "tabs": {
  1132. "provider": "Provider Availability",
  1133. "endpoint": "Endpoint Health"
  1134. },
  1135. "overview": {
  1136. "systemAvailability": "System Availability",
  1137. "avgLatency": "Avg Latency",
  1138. "errorRate": "Error Rate",
  1139. "activeProbes": "Active Probes",
  1140. "load": "Load"
  1141. },
  1142. "status": {
  1143. "green": "Healthy",
  1144. "red": "Unhealthy",
  1145. "unknown": "Unknown"
  1146. },
  1147. "statusDescription": {
  1148. "green": "Service is healthy, requests successful",
  1149. "red": "Service unavailable or error",
  1150. "unknown": "No data available"
  1151. },
  1152. "metrics": {
  1153. "systemAvailability": "System Availability",
  1154. "totalRequests": "Total Requests",
  1155. "successRate": "Success Rate",
  1156. "avgLatency": "Avg Latency",
  1157. "p50Latency": "P50 Latency",
  1158. "p95Latency": "P95 Latency",
  1159. "p99Latency": "P99 Latency",
  1160. "lastRequest": "Last Request",
  1161. "requestCount": "Request Count"
  1162. },
  1163. "timeRange": {
  1164. "label": "Time Range",
  1165. "15min": "15 min",
  1166. "1h": "1 hour",
  1167. "6h": "6 hours",
  1168. "24h": "24 hours",
  1169. "7d": "7 days",
  1170. "last15min": "Last 15 minutes",
  1171. "last1h": "Last 1 hour",
  1172. "last6h": "Last 6 hours",
  1173. "last24h": "Last 24 hours",
  1174. "last7d": "Last 7 days",
  1175. "custom": "Custom"
  1176. },
  1177. "filters": {
  1178. "provider": "Provider",
  1179. "allProviders": "All Providers",
  1180. "includeDisabled": "Include Disabled"
  1181. },
  1182. "sort": {
  1183. "label": "Sort By",
  1184. "availability": "Availability",
  1185. "name": "Name",
  1186. "requests": "Requests"
  1187. },
  1188. "columns": {
  1189. "provider": "Provider",
  1190. "type": "Type",
  1191. "status": "Status",
  1192. "availability": "Availability",
  1193. "requests": "Requests",
  1194. "successRate": "Success Rate",
  1195. "avgLatency": "Avg Latency",
  1196. "lastRequest": "Last Request",
  1197. "actions": "Actions"
  1198. },
  1199. "chart": {
  1200. "title": "Availability Trend",
  1201. "description": "Availability changes over time periods",
  1202. "availabilityScore": "Availability Score",
  1203. "requestVolume": "Request Volume",
  1204. "latencyTrend": "Latency Trend",
  1205. "noData": "No Data"
  1206. },
  1207. "details": {
  1208. "title": "Provider Details",
  1209. "overview": "Overview",
  1210. "timeBuckets": "Time Buckets",
  1211. "greenCount": "Successful Requests",
  1212. "redCount": "Failed Requests"
  1213. },
  1214. "actions": {
  1215. "refresh": "Refresh",
  1216. "refreshing": "Refreshing...",
  1217. "autoRefresh": "Auto Refresh",
  1218. "stopAutoRefresh": "Stop Auto Refresh",
  1219. "viewDetails": "View Details",
  1220. "testProvider": "Test Provider",
  1221. "retry": "Retry",
  1222. "probeNow": "Probe Now",
  1223. "probing": "Probing...",
  1224. "probeAll": "Probe All",
  1225. "probeSuccess": "Probe successful",
  1226. "probeFailed": "Probe failed"
  1227. },
  1228. "states": {
  1229. "loading": "Loading...",
  1230. "error": "Load Failed",
  1231. "noProviders": "No Providers",
  1232. "noData": "No availability data",
  1233. "fetchFailed": "Failed to fetch availability data"
  1234. },
  1235. "legend": {
  1236. "green": "Excellent (95%+ availability)",
  1237. "lime": "Good (80-95% availability)",
  1238. "orange": "Warning (50-80% availability)",
  1239. "red": "Unhealthy (<50% availability)",
  1240. "noData": "No Data"
  1241. },
  1242. "summary": {
  1243. "title": "Availability Summary",
  1244. "healthyProviders": "Healthy Providers",
  1245. "unhealthyProviders": "Unhealthy Providers",
  1246. "unknownProviders": "No Data",
  1247. "totalProviders": "Total Providers"
  1248. },
  1249. "heatmap": {
  1250. "bucketSize": "Bucket Size",
  1251. "minutes": "min",
  1252. "requests": "requests",
  1253. "noData": "No Data",
  1254. "noRequests": "No Requests"
  1255. },
  1256. "probeHistory": {
  1257. "title": "Endpoint Probe History",
  1258. "description": "View probe logs and manually trigger probes for specific endpoints",
  1259. "selectVendor": "Select Vendor",
  1260. "selectType": "Select Provider Type",
  1261. "selectEndpoint": "Select Endpoint",
  1262. "noEndpoints": "No endpoints found",
  1263. "probeNow": "Probe Now",
  1264. "probing": "Probing...",
  1265. "columns": {
  1266. "time": "Time",
  1267. "method": "Method",
  1268. "status": "Status",
  1269. "latency": "Latency",
  1270. "error": "Error"
  1271. },
  1272. "success": "Success",
  1273. "manual": "Manual Probe",
  1274. "auto": "Auto Probe",
  1275. "probeSuccess": "Probe successful",
  1276. "probeFailed": "Probe failed"
  1277. },
  1278. "laneChart": {
  1279. "title": "Provider Availability Timeline",
  1280. "noData": "No data available",
  1281. "requests": "{count} requests",
  1282. "availability": "{value}% available",
  1283. "noRequests": "No requests",
  1284. "denseData": "Dense",
  1285. "sparseData": "Sparse",
  1286. "latency": "Latency"
  1287. },
  1288. "latencyChart": {
  1289. "title": "Latency Distribution",
  1290. "p50": "P50",
  1291. "p95": "P95",
  1292. "p99": "P99",
  1293. "noData": "No latency data available"
  1294. },
  1295. "latencyCurve": {
  1296. "title": "Latency Trend",
  1297. "noData": "No latency data available",
  1298. "avg": "Avg",
  1299. "min": "Min",
  1300. "max": "Max",
  1301. "latency": "Latency"
  1302. },
  1303. "terminal": {
  1304. "title": "Probe Logs",
  1305. "live": "LIVE",
  1306. "download": "Download logs",
  1307. "noLogs": "No probe logs available",
  1308. "manual": "MANUAL",
  1309. "auto": "AUTO",
  1310. "filterPlaceholder": "Filter logs..."
  1311. },
  1312. "probeGrid": {
  1313. "title": "Endpoint Status",
  1314. "noEndpoints": "No endpoints configured",
  1315. "lastProbe": "Last probe",
  1316. "status": {
  1317. "unknown": "Unknown",
  1318. "healthy": "Healthy",
  1319. "unhealthy": "Unhealthy"
  1320. }
  1321. },
  1322. "endpoint": {
  1323. "selectVendor": "Select vendor",
  1324. "selectType": "Select type"
  1325. },
  1326. "confidence": {
  1327. "low": "Low",
  1328. "medium": "Medium",
  1329. "high": "High",
  1330. "lowTooltip": "Less than {count} requests. Data may not be representative.",
  1331. "mediumTooltip": "Moderate request volume. Data is reasonably reliable.",
  1332. "highTooltip": "High request volume. Data is reliable."
  1333. },
  1334. "toast": {
  1335. "refreshSuccess": "Availability data refreshed",
  1336. "refreshFailed": "Refresh failed, please retry"
  1337. }
  1338. },
  1339. "rateLimits": {
  1340. "title": "Rate Limit Event Statistics",
  1341. "description": "View and analyze statistics for rate limit events",
  1342. "loading": "Loading...",
  1343. "error": "Load Failed",
  1344. "totalEvents": "Total Events",
  1345. "avgUsage": "Avg Usage",
  1346. "affectedUsers": "Affected Users",
  1347. "noData": "No Data",
  1348. "noDataHint": "No rate limit events in the selected time range",
  1349. "filters": {
  1350. "startTime": "Start Time",
  1351. "endTime": "End Time",
  1352. "user": "User",
  1353. "provider": "Provider",
  1354. "limitType": "Limit Type",
  1355. "allUsers": "All Users",
  1356. "allProviders": "All Providers",
  1357. "allLimitTypes": "All Types",
  1358. "apply": "Apply Filters",
  1359. "reset": "Reset",
  1360. "loading": "Loading...",
  1361. "limitTypes": {
  1362. "rpm": "RPM Limit",
  1363. "usd_5h": "5h Spend Limit",
  1364. "usd_weekly": "Weekly Spend Limit",
  1365. "usd_monthly": "Monthly Spend Limit",
  1366. "concurrent_sessions": "Concurrent Session Limit",
  1367. "daily_quota": "Daily Quota Limit"
  1368. }
  1369. },
  1370. "chart": {
  1371. "title": "Rate Limit Timeline",
  1372. "description": "Hourly trend of rate limit events",
  1373. "total": "Total",
  1374. "events": "Events"
  1375. },
  1376. "breakdown": {
  1377. "title": "Rate Limit Type Breakdown",
  1378. "description": "Share of events by rate limit type",
  1379. "total": "Total",
  1380. "count": "Events",
  1381. "percentage": "Percentage",
  1382. "noData": "No Data",
  1383. "types": {
  1384. "rpm": "RPM",
  1385. "usd_5h": "5h Spend",
  1386. "usd_weekly": "Weekly Spend",
  1387. "usd_monthly": "Monthly Spend",
  1388. "concurrent_sessions": "Concurrent Sessions",
  1389. "daily_quota": "Daily Quota"
  1390. }
  1391. },
  1392. "topUsers": {
  1393. "title": "Top Affected Users",
  1394. "description": "Users who triggered rate limits most frequently",
  1395. "total": "Total",
  1396. "rank": "Rank",
  1397. "username": "Username",
  1398. "eventCount": "Events",
  1399. "percentage": "Percentage",
  1400. "loading": "Loading...",
  1401. "noData": "No Data"
  1402. }
  1403. },
  1404. "users": {
  1405. "title": "User Management",
  1406. "description": "Showing {count} users",
  1407. "toolbar": {
  1408. "searchPlaceholder": "Search name, note, tags, keys...",
  1409. "groupFilter": "Filter by Group",
  1410. "allGroups": "All Groups",
  1411. "tagFilter": "Filter by Tag",
  1412. "allTags": "All Tags",
  1413. "keyGroupFilter": "Key Group",
  1414. "allKeyGroups": "All Key Groups",
  1415. "sortBy": "Sort by",
  1416. "sortOrder": "Sort order",
  1417. "sortByName": "Name",
  1418. "sortByTags": "Tags",
  1419. "sortByExpiresAt": "Expires at",
  1420. "sortByRpm": "RPM Limit",
  1421. "sortByLimit5h": "5h limit",
  1422. "sortByLimitDaily": "Daily limit",
  1423. "sortByLimitWeekly": "Weekly limit",
  1424. "sortByLimitMonthly": "Monthly limit",
  1425. "sortByCreatedAt": "Created at",
  1426. "ascending": "Ascending",
  1427. "descending": "Descending",
  1428. "statusFilter": "Status",
  1429. "allStatus": "All statuses",
  1430. "statusActive": "Active",
  1431. "statusExpired": "Expired",
  1432. "statusExpiringSoon": "Expiring soon",
  1433. "statusEnabled": "Enabled",
  1434. "statusDisabled": "Disabled",
  1435. "createUser": "Create User",
  1436. "createKey": "Create Key"
  1437. },
  1438. "dialog": {
  1439. "userProviderGroup": "Your Provider Groups",
  1440. "userProviderGroupHint": "New keys can only use your existing provider groups."
  1441. }
  1442. },
  1443. "userManagement": {
  1444. "table": {
  1445. "columns": {
  1446. "username": "Username",
  1447. "note": "Note",
  1448. "expiresAt": "Expires at",
  1449. "expiresAtHint": "Click to quick renew",
  1450. "limitRpm": "RPM",
  1451. "limit5h": "5h limit",
  1452. "limitDaily": "Daily limit",
  1453. "limitWeekly": "Weekly limit",
  1454. "limitMonthly": "Monthly limit",
  1455. "limitTotal": "Total limit",
  1456. "limitSessions": "Concurrent sessions"
  1457. },
  1458. "keyRow": {
  1459. "name": "Key name",
  1460. "key": "Key",
  1461. "group": "Group",
  1462. "todayUsage": "Requests today",
  1463. "todayCost": "Today's cost",
  1464. "todayTokens": "Tokens today",
  1465. "lastUsed": "Last used",
  1466. "actions": "Actions",
  1467. "quotaButton": "View Quota Usage",
  1468. "fields": {
  1469. "callsLabel": "Requests",
  1470. "tokensLabel": "Tokens",
  1471. "costLabel": "Cost"
  1472. }
  1473. },
  1474. "expand": "Expand",
  1475. "collapse": "Collapse",
  1476. "refresh": "Refresh",
  1477. "noKeys": "No keys",
  1478. "defaultGroup": "default",
  1479. "userStatus": {
  1480. "disabled": "Disabled"
  1481. },
  1482. "actions": {
  1483. "addKey": "Add Key"
  1484. }
  1485. },
  1486. "keyFullDisplay": {
  1487. "title": "Full Key",
  1488. "copySuccess": "Key copied to clipboard",
  1489. "copyFailed": "Copy failed",
  1490. "show": "Show key",
  1491. "hide": "Hide key",
  1492. "copied": "Copied",
  1493. "copy": "Copy key"
  1494. },
  1495. "keyStatsDialog": {
  1496. "title": "Today's Model Statistics",
  1497. "columns": {
  1498. "model": "Model",
  1499. "calls": "Calls",
  1500. "tokens": "Tokens",
  1501. "cost": "Cost"
  1502. },
  1503. "modal": {
  1504. "requests": "Requests",
  1505. "totalTokens": "Total Tokens",
  1506. "cost": "Cost",
  1507. "inputTokens": "Input Tokens",
  1508. "outputTokens": "Output Tokens",
  1509. "cacheWrite": "Cache Write",
  1510. "cacheRead": "Cache Read",
  1511. "cacheHitRate": "Cache Hit Rate",
  1512. "cacheTokens": "Cache Tokens",
  1513. "performanceHigh": "High",
  1514. "performanceMedium": "Medium",
  1515. "performanceLow": "Low"
  1516. },
  1517. "noData": "No usage records today",
  1518. "totalCalls": "Total Calls",
  1519. "totalCost": "Total Cost"
  1520. },
  1521. "keyQuotaUsageDialog": {
  1522. "title": "Key Quota Usage",
  1523. "fetchFailed": "Failed to fetch quota usage",
  1524. "noLimit": "No limit",
  1525. "modeFixed": "Fixed time",
  1526. "modeRolling": "Rolling 24h",
  1527. "retry": "Retry",
  1528. "labels": {
  1529. "limit5h": "5 Hours",
  1530. "limitDaily": "Daily",
  1531. "limitWeekly": "Weekly",
  1532. "limitMonthly": "Monthly",
  1533. "limitTotal": "Total",
  1534. "limitSessions": "Concurrent"
  1535. }
  1536. },
  1537. "quickRenew": {
  1538. "title": "Quick Renew",
  1539. "description": "Set a new expiration date for user {userName}",
  1540. "currentExpiry": "Current Expiration",
  1541. "neverExpires": "Never expires",
  1542. "expired": "Expired",
  1543. "quickExtensionLabel": "Quick Extension",
  1544. "quickExtensionHint": "Extend from current expiry (or from now if expired)",
  1545. "customDateLabel": "Set Expiry Date",
  1546. "customDateHint": "Directly specify an expiry date",
  1547. "quickOptions": {
  1548. "7days": "7 Days",
  1549. "30days": "30 Days",
  1550. "90days": "90 Days",
  1551. "1year": "1 Year"
  1552. },
  1553. "customDate": "Custom Date",
  1554. "enableOnRenew": "Also enable user",
  1555. "enableKeyOnRenew": "Also enable key",
  1556. "cancel": "Cancel",
  1557. "confirm": "Confirm Renewal",
  1558. "confirming": "Renewing...",
  1559. "success": "Renewal successful",
  1560. "failed": "Renewal failed"
  1561. },
  1562. "dialog": {
  1563. "createKeyTitle": "Create Key",
  1564. "editKeyTitle": "Edit Key"
  1565. },
  1566. "editDialog": {
  1567. "title": "Edit user",
  1568. "description": "Edit user information",
  1569. "userSection": "User settings",
  1570. "keysSection": "Key settings",
  1571. "scrollToKey": "Scroll to key",
  1572. "saveFailed": "Failed to save user",
  1573. "keySaveFailed": "Failed to save key",
  1574. "keyDeleteFailed": "Failed to delete key",
  1575. "saveSuccess": "Changes saved successfully",
  1576. "atLeastOneKeyEnabled": "At least one key must be enabled",
  1577. "operationFailed": "Operation failed",
  1578. "userDisabled": "User has been disabled",
  1579. "userEnabled": "User has been enabled",
  1580. "deleteFailed": "Failed to delete user",
  1581. "userDeleted": "User has been deleted",
  1582. "saving": "Saving...",
  1583. "resetSection": {
  1584. "title": "Reset Options"
  1585. },
  1586. "resetLimits": {
  1587. "title": "Reset Limits",
  1588. "description": "Reset accumulated cost counters for all limits. Request logs and statistics are preserved.",
  1589. "button": "Reset Limits",
  1590. "confirmTitle": "Reset Limits Only?",
  1591. "confirmDescription": "This will reset all accumulated cost counters (5h, daily, weekly, monthly, total) to zero. Request logs and usage statistics will be preserved.",
  1592. "confirm": "Yes, Reset Limits",
  1593. "loading": "Resetting...",
  1594. "error": "Failed to reset limits",
  1595. "success": "All limits have been reset",
  1596. "lastResetAt": "Last reset: {date}"
  1597. },
  1598. "resetData": {
  1599. "title": "Reset Statistics",
  1600. "description": "Delete all request logs and usage data for this user. This action is irreversible.",
  1601. "error": "Failed to reset data",
  1602. "button": "Reset Statistics",
  1603. "confirmTitle": "Reset All Statistics?",
  1604. "confirmDescription": "This will permanently delete all request logs and usage statistics for this user. This action cannot be undone.",
  1605. "confirm": "Yes, Reset All",
  1606. "loading": "Resetting...",
  1607. "success": "All statistics have been reset"
  1608. }
  1609. },
  1610. "batchEdit": {
  1611. "enterMode": "Batch Edit",
  1612. "exitMode": "Exit",
  1613. "selectAll": "Select All",
  1614. "selectedCount": "Selected {users} users, {keys} keys",
  1615. "editSelected": "Edit Selected",
  1616. "dialog": {
  1617. "title": "Batch Edit",
  1618. "description": "Will affect {users} users and {keys} keys",
  1619. "cancel": "Cancel",
  1620. "next": "Next",
  1621. "noFieldEnabled": "Please enable at least one field to override",
  1622. "noUpdate": "No updates to execute",
  1623. "noSelection": "Please select users or keys to batch edit first."
  1624. },
  1625. "confirm": {
  1626. "title": "Confirm Batch Update",
  1627. "description": "This will update {users} users and {keys} keys. This action cannot be undone.",
  1628. "userFields": "User Fields",
  1629. "keyFields": "Key Fields",
  1630. "goBack": "Go Back",
  1631. "update": "Confirm Update",
  1632. "updating": "Updating..."
  1633. },
  1634. "toast": {
  1635. "usersUpdated": "Updated {count} users",
  1636. "keysUpdated": "Updated {count} keys",
  1637. "usersFailed": "User update failed: {error}",
  1638. "keysFailed": "Key update failed: {error}",
  1639. "batchFailed": "Batch update failed"
  1640. },
  1641. "validation": {
  1642. "invalidNumber": "Please enter a valid number",
  1643. "negativeNumber": "Value cannot be negative"
  1644. },
  1645. "aria": {
  1646. "selectUser": "Select user",
  1647. "selectKey": "Select key"
  1648. },
  1649. "user": {
  1650. "title": "User Settings",
  1651. "affected": "Will affect {count} users",
  1652. "enableFieldAria": "Enable field: {title}",
  1653. "fields": {
  1654. "note": "Note",
  1655. "tags": "Tags",
  1656. "rpm": "RPM Limit",
  1657. "limit5h": "5h Limit (USD)",
  1658. "limitDaily": "Daily Limit (USD)",
  1659. "limitWeekly": "Weekly Limit (USD)",
  1660. "limitMonthly": "Monthly Limit (USD)"
  1661. },
  1662. "placeholders": {
  1663. "emptyToClear": "Leave empty to clear",
  1664. "tagsPlaceholder": "Press enter to add, comma-separated",
  1665. "emptyNoLimit": "Leave empty for no limit"
  1666. }
  1667. },
  1668. "key": {
  1669. "title": "Key Settings",
  1670. "affected": "Will affect {count} keys",
  1671. "fields": {
  1672. "providerGroup": "Group (providerGroup)",
  1673. "limit5h": "5h Limit (USD)",
  1674. "limitDaily": "Daily Limit (USD)",
  1675. "limitWeekly": "Weekly Limit (USD)",
  1676. "limitMonthly": "Monthly Limit (USD)",
  1677. "canLoginWebUi": "Independent Personal Usage Page",
  1678. "keyEnabled": "Key Enabled Status"
  1679. },
  1680. "placeholders": {
  1681. "groupPlaceholder": "Leave empty to clear, comma-separated for multiple",
  1682. "emptyNoLimit": "Leave empty for no limit"
  1683. },
  1684. "targetValue": "Target Value"
  1685. }
  1686. },
  1687. "createDialog": {
  1688. "title": "Create user",
  1689. "description": "Create a new user and configure API keys",
  1690. "saveFailed": "Failed to create user",
  1691. "keyCreateFailed": "Failed to create key",
  1692. "rollbackFailed": "Rollback failed. The user may have been created without a key. Please delete the user manually (userId: {userId}) and try again.",
  1693. "createSuccess": "User created successfully",
  1694. "successTitle": "Created Successfully",
  1695. "successDescription": "User and key have been created",
  1696. "generatedKey": "Generated Key",
  1697. "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.",
  1698. "keysSection": "Keys",
  1699. "addKey": "Add key",
  1700. "removeKey": "Remove key",
  1701. "cannotDeleteLastKey": "Cannot delete the last key",
  1702. "confirmRemoveKeyTitle": "Remove key",
  1703. "confirmRemoveKeyDescription": "Are you sure you want to remove the key \"{name}\"?",
  1704. "creating": "Creating...",
  1705. "create": "Create"
  1706. },
  1707. "limitRules": {
  1708. "addRule": "Add limit rule",
  1709. "title": "Add Limit Rule",
  1710. "description": "Select limit type and set value",
  1711. "cancel": "Cancel",
  1712. "confirm": "Save",
  1713. "fields": {
  1714. "type": {
  1715. "label": "Limit Type",
  1716. "placeholder": "Select"
  1717. },
  1718. "value": {
  1719. "label": "Value",
  1720. "placeholder": "Enter"
  1721. }
  1722. },
  1723. "daily": {
  1724. "mode": {
  1725. "label": "Daily Reset Mode",
  1726. "fixed": "Fixed time reset",
  1727. "rolling": "Rolling window (24h)",
  1728. "helperRolling": "Rolling 24-hour window from first request"
  1729. },
  1730. "time": {
  1731. "label": "Reset Time",
  1732. "placeholder": "HH:mm"
  1733. }
  1734. },
  1735. "limitTypes": {
  1736. "limitRpm": "RPM Limit",
  1737. "limit5h": "5-Hour Limit",
  1738. "limitDaily": "Daily Limit",
  1739. "limitWeekly": "Weekly Limit",
  1740. "limitMonthly": "Monthly Limit",
  1741. "limitTotal": "Total Limit",
  1742. "limitSessions": "Concurrent Sessions"
  1743. },
  1744. "ruleTypes": {
  1745. "limitRpm": "RPM limit",
  1746. "limit5h": "5-hour limit",
  1747. "limitDaily": "Daily limit",
  1748. "limitWeekly": "Weekly limit",
  1749. "limitMonthly": "Monthly limit",
  1750. "limitTotal": "Total limit",
  1751. "limitSessions": "Concurrent sessions"
  1752. },
  1753. "errors": {
  1754. "missingType": "Please select a limit type",
  1755. "invalidValue": "Please enter a valid value",
  1756. "invalidTime": "Please enter a valid time (HH:mm)"
  1757. },
  1758. "overwriteHint": "This type already exists, saving will overwrite the existing value",
  1759. "dailyMode": {
  1760. "fixed": "Fixed reset time",
  1761. "rolling": "Rolling window (24h)"
  1762. },
  1763. "quickValues": {
  1764. "10": "$10",
  1765. "50": "$50",
  1766. "100": "$100",
  1767. "500": "$500",
  1768. "unlimited": "Unlimited"
  1769. },
  1770. "alreadySet": "Configured",
  1771. "confirmAdd": "Add"
  1772. },
  1773. "quickExpire": {
  1774. "oneWeek": "In 1 week",
  1775. "oneMonth": "In 1 month",
  1776. "threeMonths": "In 3 months",
  1777. "oneYear": "In 1 year"
  1778. },
  1779. "providerGroupSelect": {
  1780. "providersSuffix": "providers",
  1781. "loadFailed": "Failed to load provider groups"
  1782. },
  1783. "providerGroup": {
  1784. "label": "Provider group",
  1785. "placeholder": "Select provider group",
  1786. "noRestriction": "No restriction (all providers)",
  1787. "providerCount": "{count} providers"
  1788. },
  1789. "dangerZone": {
  1790. "title": "Danger Zone",
  1791. "description": "The following actions are irreversible, proceed with caution",
  1792. "enable": {
  1793. "title": "Enable User",
  1794. "description": "After enabling, this user and their keys will resume normal operation",
  1795. "trigger": "Enable",
  1796. "confirm": "Confirm Enable",
  1797. "confirmDescription": "Are you sure you want to enable user \"{userName}\"?",
  1798. "loading": "Processing..."
  1799. },
  1800. "disable": {
  1801. "title": "Disable User",
  1802. "description": "After disabling, this user and their keys will no longer be usable",
  1803. "trigger": "Disable",
  1804. "confirm": "Confirm Disable",
  1805. "confirmDescription": "Are you sure you want to disable user \"{userName}\"?",
  1806. "loading": "Processing..."
  1807. },
  1808. "delete": {
  1809. "title": "Delete User",
  1810. "description": "This will delete all associated data for this user, this action cannot be undone",
  1811. "trigger": "Delete",
  1812. "confirm": "Confirm Delete",
  1813. "confirmDescription": "This action will delete all associated data for user \"{userName}\" and cannot be undone.",
  1814. "confirmLabel": "Secondary Confirmation",
  1815. "confirmHint": "Please type \"{userName}\" to confirm deletion",
  1816. "loading": "Deleting..."
  1817. },
  1818. "actions": {
  1819. "cancel": "Cancel"
  1820. },
  1821. "errors": {
  1822. "enableFailed": "Failed to enable user, please try again later",
  1823. "disableFailed": "Failed to disable user, please try again later",
  1824. "deleteFailed": "Failed to delete user, please try again later"
  1825. }
  1826. },
  1827. "limitIndicator": {
  1828. "notSet": "Not set",
  1829. "unlimited": "Unlimited"
  1830. },
  1831. "keySettings": {
  1832. "balanceQueryPage": {
  1833. "label": "Enable dedicated balance page",
  1834. "description": "Allow users to view their balance via a dedicated page",
  1835. "descriptionEnabled": "When enabled, this key will access an independent personal usage page upon login. However, it cannot modify its own key's provider group.",
  1836. "descriptionDisabled": "When disabled, the user cannot access the personal usage page UI. Instead, they will use the restricted Web UI."
  1837. },
  1838. "cacheTtlOverride": {
  1839. "label": "Cache TTL override",
  1840. "inherit": "No override (follow provider/client)",
  1841. "5m": "5 minutes",
  1842. "1h": "1 hour"
  1843. }
  1844. },
  1845. "pagination": {
  1846. "previous": "Previous",
  1847. "next": "Next",
  1848. "page": "Page {current}",
  1849. "of": "of {total}"
  1850. },
  1851. "toolbar": {
  1852. "expandAll": "Expand all",
  1853. "collapseAll": "Collapse all"
  1854. },
  1855. "keyStatus": {
  1856. "enabled": "Enabled",
  1857. "disabled": "Disabled",
  1858. "active": "Active",
  1859. "expired": "Expired",
  1860. "expiringSoon": "Expiring Soon",
  1861. "keyEnabled": "Key enabled",
  1862. "keyDisabled": "Key disabled",
  1863. "toggleKeyStatus": "Toggle key status",
  1864. "clickToDisableKey": "Click to disable key",
  1865. "clickToEnableKey": "Click to enable key",
  1866. "operationFailed": "Operation failed",
  1867. "clickToQuickRenew": "Click to quick renew"
  1868. },
  1869. "userStatus": {
  1870. "enabled": "Enabled",
  1871. "disabled": "Disabled",
  1872. "active": "Active",
  1873. "expired": "Expired",
  1874. "expiringSoon": "Expiring Soon",
  1875. "userEnabled": "User enabled",
  1876. "userDisabled": "User disabled",
  1877. "toggleUserStatus": "Toggle user status",
  1878. "clickToDisableUser": "Click to disable user",
  1879. "clickToEnableUser": "Click to enable user",
  1880. "operationFailed": "Operation failed",
  1881. "deleteFailed": "Delete failed",
  1882. "deleteSuccess": "Delete successful",
  1883. "daysLeft": "{days, plural, =0 {Expires today} =1 {1 day left} other {# days left}}"
  1884. },
  1885. "userEditSection": {
  1886. "sections": {
  1887. "basicInfo": "Basic Information",
  1888. "expireTime": "Expiration Time",
  1889. "limitRules": "Limit Rules",
  1890. "accessRestrictions": "Access Restrictions"
  1891. },
  1892. "fields": {
  1893. "username": {
  1894. "label": "Username",
  1895. "placeholder": "Enter username"
  1896. },
  1897. "description": {
  1898. "label": "Note",
  1899. "placeholder": "Enter note (optional)"
  1900. },
  1901. "tags": {
  1902. "label": "User Tags",
  1903. "placeholder": "Enter tag (press Enter to add)"
  1904. },
  1905. "providerGroup": {
  1906. "label": "Provider Group",
  1907. "placeholder": "default"
  1908. },
  1909. "allowedClients": {
  1910. "label": "Client Restrictions",
  1911. "description": "Restrict which CLI/IDE clients can use this account. Empty = no restriction.",
  1912. "customLabel": "Custom Client Pattern",
  1913. "customPlaceholder": "Enter pattern (e.g., 'my-ide', 'codex-*')",
  1914. "customHelp": "Without '*': case-insensitive substring match ('-'/'_' ignored). With '*': glob pattern match from start of UA (use *foo* to match anywhere; case-insensitive, characters are literal)."
  1915. },
  1916. "blockedClients": {
  1917. "label": "Blocked Clients",
  1918. "description": "Clients matching these patterns will be rejected, even if they match allowed clients.",
  1919. "customLabel": "Custom Block Pattern",
  1920. "customPlaceholder": "Enter pattern (e.g., 'my-ide', 'codex-*')",
  1921. "customHelp": "Without '*': case-insensitive substring match ('-'/'_' ignored). With '*': glob pattern match from start of UA (use *foo* to match anywhere; case-insensitive, characters are literal)."
  1922. },
  1923. "allowedModels": {
  1924. "label": "Model Restrictions",
  1925. "placeholder": "Enter model name or select from dropdown",
  1926. "description": "Restrict which AI models this user can access. Empty = no restriction."
  1927. },
  1928. "enableStatus": {
  1929. "label": "Enable Status",
  1930. "enabledDescription": "Currently enabled. Disabling will prevent this user and their keys from being used.",
  1931. "disabledDescription": "Currently disabled. Enabling will restore normal access for this user and their keys.",
  1932. "confirmDisable": "Confirm Disable",
  1933. "confirmEnable": "Confirm Enable",
  1934. "confirmEnableTitle": "Confirm Enable User",
  1935. "confirmDisableTitle": "Confirm Disable User",
  1936. "confirmEnableDescription": "Enabling will restore normal access for this user and their keys.",
  1937. "confirmDisableDescription": "Disabling will prevent this user and their keys from being used.",
  1938. "cancel": "Cancel",
  1939. "processing": "Processing..."
  1940. }
  1941. },
  1942. "actions": {
  1943. "allow": "Allow",
  1944. "block": "Block"
  1945. },
  1946. "presetClients": {
  1947. "claude-cli": "Claude Code CLI",
  1948. "gemini-cli": "Gemini CLI",
  1949. "factory-cli": "Droid CLI",
  1950. "codex-cli": "Codex CLI",
  1951. "claude-code": "Claude Code (all)",
  1952. "claude-code-cli": "Claude Code CLI (builtin)",
  1953. "claude-code-cli-sdk": "Claude Code CLI SDK",
  1954. "claude-code-vscode": "Claude Code VSCode",
  1955. "claude-code-sdk-ts": "Claude Code SDK (TypeScript)",
  1956. "claude-code-sdk-py": "Claude Code SDK (Python)",
  1957. "claude-code-gh-action": "Claude Code GitHub Action"
  1958. },
  1959. "subClients": {
  1960. "all": "All",
  1961. "cli": "CLI",
  1962. "vscode": "VS Code",
  1963. "sdk-ts": "SDK (TypeScript)",
  1964. "sdk-py": "SDK (Python)",
  1965. "cli-sdk": "CLI SDK",
  1966. "gh-action": "GitHub Action",
  1967. "codex-cli-core": "CLI / TUI",
  1968. "desktop": "Desktop",
  1969. "exec": "Exec"
  1970. },
  1971. "nSelected": "{count} selected"
  1972. },
  1973. "keyEditSection": {
  1974. "sections": {
  1975. "basicInfo": "Basic Information",
  1976. "expireTime": "Expiration Time",
  1977. "limitRules": "Limit Rules",
  1978. "specialFeatures": "Special Features"
  1979. },
  1980. "fields": {
  1981. "keyName": {
  1982. "label": "Key Name",
  1983. "placeholder": "Enter key name"
  1984. },
  1985. "enableStatus": {
  1986. "label": "Enable Status",
  1987. "description": "Disabled keys cannot be used",
  1988. "cannotDisableTooltip": "Cannot disable the last enabled key"
  1989. },
  1990. "balanceQueryPage": {
  1991. "label": "Independent Personal Usage Page",
  1992. "description": "When enabled, this key can access an independent personal usage page",
  1993. "descriptionEnabled": "When enabled, this key will access an independent personal usage page upon login. However, it cannot modify its own key's provider group.",
  1994. "descriptionDisabled": "When disabled, the user cannot access the personal usage page UI. Instead, they will use the restricted Web UI."
  1995. },
  1996. "providerGroup": {
  1997. "label": "Provider Group",
  1998. "placeholder": "Default: default",
  1999. "selectHint": "Select the provider group(s) this key can use (default: default).",
  2000. "editHint": "Provider group cannot be changed for existing keys.",
  2001. "allGroups": "Use all groups",
  2002. "noGroupHint": "default includes providers without groupTag."
  2003. },
  2004. "cacheTtl": {
  2005. "label": "Cache TTL Override",
  2006. "description": "Force Anthropic prompt cache TTL for requests containing cache_control.",
  2007. "options": {
  2008. "inherit": "No override (follow provider/client)",
  2009. "5m": "5m",
  2010. "1h": "1h"
  2011. }
  2012. }
  2013. },
  2014. "limitRules": {
  2015. "title": "Add limit rule",
  2016. "actions": {
  2017. "add": "Add rule",
  2018. "remove": "Remove"
  2019. },
  2020. "daily": {
  2021. "mode": {
  2022. "fixed": "Fixed time reset",
  2023. "rolling": "Rolling window (24h)"
  2024. }
  2025. },
  2026. "overwriteHint": "This type already exists, saving will overwrite the existing value"
  2027. },
  2028. "accessRestrictions": {
  2029. "title": "Access Restrictions",
  2030. "models": "Allowed Models",
  2031. "clients": "Allowed Clients",
  2032. "noRestrictions": "No restrictions",
  2033. "inheritedFromUser": "Inherited from user settings"
  2034. }
  2035. }
  2036. },
  2037. "webhookMigration": {
  2038. "title": "Webhook System Upgrade",
  2039. "description": "We have launched a new Webhook notification system with multi-target delivery, independent configuration, and improved reliability.",
  2040. "step1": {
  2041. "title": "Legacy Webhook Configuration Detected",
  2042. "description": "The system detected that you are using legacy Webhook configuration. The new system offers more powerful features, and we recommend migrating."
  2043. },
  2044. "step2": {
  2045. "title": "Select Platform Type",
  2046. "description": "The following Webhook URLs could not be automatically identified. Please select the platform manually:"
  2047. },
  2048. "platformOptions": {
  2049. "wechat": "WeChat Work",
  2050. "feishu": "Feishu",
  2051. "dingtalk": "DingTalk",
  2052. "telegram": "Telegram",
  2053. "custom": "Custom"
  2054. },
  2055. "migrateButton": "Start Migration",
  2056. "skipButton": "Maybe Later",
  2057. "nextButton": "Next",
  2058. "goToSettingsButton": "Go to Settings",
  2059. "migrating": "Migrating...",
  2060. "success": "Migration Complete",
  2061. "successDescription": "Your Webhook configuration has been successfully migrated to the new system.",
  2062. "error": "Migration Failed",
  2063. "errorGeneric": "Migration failed. Please try again later.",
  2064. "detectedWebhooks": "Detected Webhooks",
  2065. "notificationTypes": {
  2066. "circuit_breaker": "Circuit Breaker Alert",
  2067. "daily_leaderboard": "Daily Leaderboard",
  2068. "cost_alert": "Cost Alert"
  2069. },
  2070. "urlLabel": "Webhook URL",
  2071. "platformLabel": "Platform Type",
  2072. "autoDetected": "Auto-detected",
  2073. "selectPlatform": "Select platform",
  2074. "successStats": "Created {targets} targets, {bindings} bindings"
  2075. }
  2076. }