notesHint:'This note is only visible to administrators',
enterNewPassword:'Enter new password (optional)',
...
...
@@ -582,7 +578,6 @@ export default {
columns:{
user:'User',
username:'Username',
wechat:'WeChat ID',
notes:'Notes',
role:'Role',
subscriptions:'Subscriptions',
...
...
@@ -653,7 +648,67 @@ export default {
failedToDeposit:'Failed to deposit',
failedToWithdraw:'Failed to withdraw',
useDepositWithdrawButtons:'Please use deposit/withdraw buttons to adjust balance',
insufficientBalance:'Insufficient balance, balance cannot be negative after withdrawal'
insufficientBalance:'Insufficient balance, balance cannot be negative after withdrawal',
// Settings Dropdowns
filterSettings:'Filter Settings',
columnSettings:'Column Settings',
filterValue:'Enter value',
// User Attributes
attributes:{
title:'User Attributes',
description:'Configure custom user attribute fields',
configButton:'Attributes',
addAttribute:'Add Attribute',
editAttribute:'Edit Attribute',
deleteAttribute:'Delete Attribute',
deleteConfirm:"Are you sure you want to delete attribute '{name}'? All user values for this attribute will be deleted.",
noAttributes:'No custom attributes',
noAttributesHint:'Click the button above to add custom attributes',
key:'Attribute Key',
keyHint:'For programmatic reference, only letters, numbers and underscores',
name:'Display Name',
nameHint:'Name shown in forms',
type:'Attribute Type',
fieldDescription:'Description',
fieldDescriptionHint:'Description text for the attribute',
placeholder:'Placeholder',
placeholderHint:'Placeholder text for input field',
required:'Required',
enabled:'Enabled',
options:'Options',
optionsHint:'For select/multi-select types',
addOption:'Add Option',
optionValue:'Option Value',
optionLabel:'Display Text',
validation:'Validation Rules',
minLength:'Min Length',
maxLength:'Max Length',
min:'Min Value',
max:'Max Value',
pattern:'Regex Pattern',
patternMessage:'Validation Error Message',
types:{
text:'Text',
textarea:'Textarea',
number:'Number',
email:'Email',
url:'URL',
date:'Date',
select:'Select',
multi_select:'Multi-Select'
},
created:'Attribute created successfully',
updated:'Attribute updated successfully',
deleted:'Attribute deleted successfully',
reordered:'Attribute order updated successfully',
failedToLoad:'Failed to load attributes',
failedToCreate:'Failed to create attribute',
failedToUpdate:'Failed to update attribute',
failedToDelete:'Failed to delete attribute',
failedToReorder:'Failed to update order',
keyExists:'Attribute key already exists',
dragToReorder:'Drag to reorder'
}
},
// Groups
...
...
@@ -945,6 +1000,15 @@ export default {
actualModel:'Actual model',
addMapping:'Add Mapping',
mappingExists:'Mapping for {model} already exists',
searchModels:'Search models...',
noMatchingModels:'No matching models',
fillRelatedModels:'Fill related models',
clearAllModels:'Clear all models',
customModelName:'Custom model name',
enterCustomModelName:'Enter custom model name',
addModel:'Add',
modelExists:'Model already exists',
modelCount:'{count} models',
customErrorCodes:'Custom Error Codes',
customErrorCodesHint:'Only stop scheduling for selected error codes',
customErrorCodesWarning:
...
...
@@ -1076,15 +1140,16 @@ export default {
failedToGenerateUrl:'Failed to generate Gemini auth URL',
missingExchangeParams:'Missing auth code, session ID, or state',
failedToExchangeCode:'Failed to exchange Gemini auth code',
missingProjectId:'GCP Project ID retrieval failed: Your Google account is not linked to an active GCP project. Please activate GCP and bind a credit card in Google Cloud Console, or manually enter the Project ID during authorization.',
modelPassthrough:'Gemini Model Passthrough',
modelPassthroughDesc:
'All model requests are forwarded directly to the Gemini API without model restrictions or mappings.',
stateWarningTitle:'Note',
stateWarningDesc:'Recommended: paste the full callback URL (includes code & state).',
oauthTypeLabel:'OAuth Type',
needsProjectId:'For GCP Developers',
needsProjectIdDesc:'Requires GCP project',
noProjectIdNeeded:'For Regular Users',
needsProjectId:'Built-in OAuth (Code Assist)',
needsProjectIdDesc:'Requires GCP project and Project ID',
builtInDesc:'Uses Google built-in client ID. No admin configuration required.',
builtInRequirement:'Requires a GCP project and Project ID.',
gcpProjectLink:'Create project',
customTitle:'Custom OAuth (AI Studio OAuth)',
customDesc:'Uses admin-configured OAuth client for org management.',
customRequirement:'Admin must configure Client ID and add you as a test user.',
badges:{
recommended:'Recommended',
highConcurrency:'High concurrency',
noAdmin:'No admin setup',
orgManaged:'Org managed',
adminRequired:'Admin required'
}
},
setupGuide:{
title:'Gemini Setup Checklist',
checklistTitle:'Checklist',
checklistItems:{
usIp:'Use a US IP and ensure your account country is set to US.',
age:'Account must be 18+.'
},
activationTitle:'One-click Activation',
activationItems:{
geminiWeb:'Activate Gemini Web to avoid User not initialized.',
gcpProject:'Activate a GCP project and get the Project ID for Code Assist.'
},
links:{
countryCheck:'Check country association',
geminiWebActivation:'Activate Gemini Web',
gcpProject:'Open GCP Console'
}
},
quotaPolicy:{
title:'Gemini Quota & Limit Policy (Reference)',
note:'Note: Gemini does not provide an official quota inquiry API. The "Daily Quota" shown here is an estimate simulated by the system based on account tiers for scheduling reference only. Please refer to official Google errors for actual limits.',
columns:{
channel:'Auth Channel',
account:'Account Status',
limits:'Limit Policy',
docs:'Official Docs'
},
docs:{
codeAssist:'Code Assist Quotas',
aiStudio:'AI Studio Pricing',
vertex:'Vertex AI Quotas'
},
simulatedNote:'Simulated quota, for reference only',
rows:{
cli:{
channel:'Gemini CLI (Official Google Login / Code Assist)',