'This {providerName} account is not yet registered. The site requires an invitation code — please enter one to complete registration.',
invalidPendingToken:'The registration token has expired. Please sign in again.',
completeRegistration:'Complete Registration',
completing:'Completing registration…',
completeRegistrationFailed:'Registration failed. Please check your invitation code and try again.'
},
oauth:{
code:'Code',
state:'State',
...
...
@@ -1618,7 +1639,6 @@ export default {
openai:'OpenAI',
gemini:'Gemini',
antigravity:'Antigravity',
sora:'Sora'
},
deleteConfirm:
"Are you sure you want to delete '{name}'? All associated API keys will no longer belong to any group.",
...
...
@@ -1643,16 +1663,6 @@ export default {
title:'Image Generation Pricing',
description:'Configure pricing for image generation models. Leave empty to use default prices.'
},
soraPricing:{
title:'Sora Per-Request Pricing',
description:'Configure per-request pricing for Sora image/video generation. Leave empty to disable billing.',
image360:'Image 360px ($)',
image540:'Image 540px ($)',
video:'Video (standard) ($)',
videoHd:'Video (Pro-HD) ($)',
storageQuota:'Storage Quota',
storageQuotaHint:'In GB, set the Sora storage quota for users in this group. 0 means use system default'
},
claudeCode:{
title:'Claude Code Client Restriction',
tooltip:'When enabled, this group only allows official Claude Code clients. Non-Claude Code requests will be rejected or fallback to the specified group.',
...
...
@@ -1666,9 +1676,23 @@ export default {
title:'OpenAI Messages Dispatch',
allowDispatch:'Allow /v1/messages dispatch',
allowDispatchHint:'When enabled, API keys in this OpenAI group can dispatch requests through /v1/messages endpoint',
defaultModel:'Default mapped model',
defaultModelPlaceholder:'e.g., gpt-4.1',
defaultModelHint:'When account has no model mapping configured, all request models will be mapped to this model'
familyMappingTitle:'Family Default Mapping',
familyMappingHint:'Requests that match the Opus, Sonnet, or Haiku families will prefer the target model configured here.',
opusModel:'Opus Target Model',
opusModelPlaceholder:'e.g., gpt-5.4',
sonnetModel:'Sonnet Target Model',
sonnetModelPlaceholder:'e.g., gpt-5.3-codex',
haikuModel:'Haiku Target Model',
haikuModelPlaceholder:'e.g., gpt-5.4-mini',
exactMappingTitle:'Exact Model Overrides',
exactMappingHint:'Exact Claude model overrides take priority over the family defaults and can route a specific Claude model to a different target model.',
antigravityApikey:'Connect via Base URL + API Key',
soraApiKey:'API Key / Upstream',
soraApiKeyHint:'Connect to another TrafficAPI or compatible API',
soraBaseUrlRequired:'Sora API Key account requires a Base URL',
soraBaseUrlInvalidScheme:'Base URL must start with http:// or https://',
upstream:'Upstream',
upstreamDesc:'Connect via Base URL + API Key'
},
...
...
@@ -2059,6 +2078,7 @@ export default {
rateLimited:'Rate Limited',
overloaded:'Overloaded',
tempUnschedulable:'Temp Unschedulable',
unschedulable:'Unschedulable',
rateLimitedUntil:'Rate limited and removed from scheduling. Auto resumes at {time}',
rateLimitedAutoResume:'Auto resumes in {time}',
modelRateLimitedUntil:'{model} rate limited until {time}',
...
...
@@ -2308,8 +2328,6 @@ export default {
codexCLIOnlyDesc:
'Only applies to OpenAI OAuth. When enabled, only Codex official client families are allowed; when disabled, the gateway bypasses this restriction and keeps existing behavior.',
modelRestrictionDisabledByPassthrough:'Automatic passthrough is enabled: model whitelist/mapping will not take effect.',
enableSora:'Enable Sora simultaneously',
enableSoraHint:'Sora uses the same OpenAI account. Enable to create Sora account simultaneously.'
},
anthropic:{
apiKeyPassthrough:'Auto passthrough (auth only)',
...
...
@@ -2324,9 +2342,6 @@ export default {
'Map request models to actual models. Left is the requested model, right is the actual model sent to API.',
selectedModels:'Selected {count} model(s)',
supportsAllModels:'(supports all models)',
soraModelsLoadFailed:'Failed to load Sora models, fallback to default list',
soraModelsLoading:'Loading Sora models...',
soraModelsRetry:'Load failed, click to retry',
requestModel:'Request model',
actualModel:'Actual model',
addMapping:'Add Mapping',
...
...
@@ -2476,8 +2491,6 @@ export default {
creating:'Creating...',
updating:'Updating...',
accountCreated:'Account created successfully',
soraAccountCreated:'Sora account created simultaneously',
soraAccountFailed:'Failed to create Sora account, please add manually later',
accountUpdated:'Account updated successfully',
failedToCreate:'Failed to create account',
failedToUpdate:'Failed to update account',
...
...
@@ -2591,8 +2604,8 @@ export default {
refreshTokenDesc:'Enter your existing OpenAI Refresh Token(s). Supports batch input (one per line). The system will automatically validate and create accounts.',
refreshTokenPlaceholder:'Paste your OpenAI Refresh Token...\nSupports multiple, one per line',
sessionTokenAuth:'Manual ST Input',
sessionTokenDesc:'Enter your existing Sora Session Token(s). Supports batch input (one per line). The system will automatically validate and create accounts.',
sessionTokenPlaceholder:'Paste your Sora Session Token...\nSupports multiple, one per line',
sessionTokenDesc:'Enter your existing Session Token(s). Supports batch input (one per line). The system will automatically validate and create accounts.',
sessionTokenPlaceholder:'Paste your Session Token...\nSupports multiple, one per line',
sessionTokenRawLabel:'Raw Input',
sessionTokenRawPlaceholder:'Paste /api/auth/session raw payload or Session Token...',
sessionTokenRawHint:'You can paste full JSON. The system will auto-parse ST and AT.',