mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-11-08 01:33:43 +08:00
feat: refactor i18n setup to use local translation files and remove backend dependency
This commit is contained in:
@@ -1,827 +0,0 @@
|
||||
{
|
||||
"header": {
|
||||
"home": "Home",
|
||||
"channel": "Channel",
|
||||
"token": "Token",
|
||||
"redemption": "Redemption",
|
||||
"topup": "Top Up",
|
||||
"user": "User",
|
||||
"dashboard": "Dashboard",
|
||||
"log": "Log",
|
||||
"setting": "Settings",
|
||||
"about": "About",
|
||||
"chat": "Chat",
|
||||
"login": "Login",
|
||||
"logout": "Logout",
|
||||
"register": "Register"
|
||||
},
|
||||
"topup": {
|
||||
"title": "Top Up Center",
|
||||
"get_code": {
|
||||
"title": "Get Redemption Code",
|
||||
"current_quota": "Current Available Quota",
|
||||
"button": "Get Code Now"
|
||||
},
|
||||
"redeem_code": {
|
||||
"title": "Redeem Code",
|
||||
"placeholder": "Please enter redemption code",
|
||||
"paste": "Paste",
|
||||
"paste_error": "Cannot access clipboard, please paste manually",
|
||||
"submit": "Redeem Now",
|
||||
"submitting": "Redeeming...",
|
||||
"empty_code": "Please enter the redemption code!",
|
||||
"success": "Top up successful!",
|
||||
"request_failed": "Request failed",
|
||||
"no_link": "Admin has not set up the top-up link!"
|
||||
}
|
||||
},
|
||||
"channel": {
|
||||
"title": "Channel Management",
|
||||
"search": "Search channels by ID, name and key...",
|
||||
"balance_notice": "OpenAI channels no longer support getting balance via key, so balance shows as 0. For supported channel types, click balance to refresh.",
|
||||
"test_notice": "Channel testing only supports chat models, preferring gpt-3.5-turbo. If unavailable, uses the first model in your configured list.",
|
||||
"detail_notice": "Click the detail button below to show balance and set additional test models.",
|
||||
"table": {
|
||||
"id": "ID",
|
||||
"name": "Name",
|
||||
"group": "Group",
|
||||
"type": "Type",
|
||||
"status": "Status",
|
||||
"response_time": "Response Time",
|
||||
"balance": "Balance",
|
||||
"priority": "Priority",
|
||||
"test_model": "Test Model",
|
||||
"actions": "Actions",
|
||||
"no_name": "None",
|
||||
"status_enabled": "Enabled",
|
||||
"status_disabled": "Disabled",
|
||||
"status_auto_disabled": "Disabled",
|
||||
"status_disabled_tip": "This channel is manually disabled",
|
||||
"status_auto_disabled_tip": "This channel is automatically disabled",
|
||||
"status_unknown": "Unknown Status",
|
||||
"not_tested": "Not Tested",
|
||||
"priority_tip": "Channel selection priority, higher is preferred",
|
||||
"select_test_model": "Please select test model",
|
||||
"click_to_update": "Click to update"
|
||||
},
|
||||
"buttons": {
|
||||
"test": "Test",
|
||||
"delete": "Delete",
|
||||
"confirm_delete": "Delete Channel",
|
||||
"enable": "Enable",
|
||||
"disable": "Disable",
|
||||
"edit": "Edit",
|
||||
"add": "Add New Channel",
|
||||
"test_all": "Test All Channels",
|
||||
"test_disabled": "Test Disabled Channels",
|
||||
"delete_disabled": "Delete Disabled Channels",
|
||||
"confirm_delete_disabled": "Confirm Delete",
|
||||
"refresh": "Refresh",
|
||||
"show_detail": "Details",
|
||||
"hide_detail": "Hide Details"
|
||||
},
|
||||
"messages": {
|
||||
"test_success": "Channel {{name}} test successful, model {{model}}, time {{time}}s, output: {{message}}",
|
||||
"test_all_started": "Channel testing started successfully, please refresh page to see results.",
|
||||
"delete_disabled_success": "Deleted all disabled channels, total: {{count}}",
|
||||
"balance_update_success": "Channel {{name}} balance updated successfully!",
|
||||
"all_balance_updated": "All enabled channel balances have been updated!"
|
||||
},
|
||||
"edit": {
|
||||
"title_edit": "Update Channel Information",
|
||||
"title_create": "Create New Channel",
|
||||
"type": "Type",
|
||||
"name": "Name",
|
||||
"name_placeholder": "Please enter name",
|
||||
"group": "Group",
|
||||
"group_placeholder": "Please select groups that can use this channel",
|
||||
"group_addition": "Please edit group multipliers in system settings to add new group:",
|
||||
"models": "Models",
|
||||
"models_placeholder": "Please select models supported by this channel",
|
||||
"model_mapping": "Model Mapping",
|
||||
"model_mapping_placeholder": "Optional, used to modify model names in request body. A JSON string where keys are request model names and values are target model names",
|
||||
"system_prompt": "System Prompt",
|
||||
"system_prompt_placeholder": "Optional, used to force set system prompt. Use with custom model & model mapping. First create a unique custom model name above, then map it to a natively supported model",
|
||||
"base_url": "Proxy",
|
||||
"base_url_placeholder": "Optional, used for API calls through proxy. Enter proxy address in format: https://domain.com",
|
||||
"key": "Key",
|
||||
"key_placeholder": "Please enter key",
|
||||
"batch": "Batch Create",
|
||||
"batch_placeholder": "Please enter keys, one per line",
|
||||
"buttons": {
|
||||
"cancel": "Cancel",
|
||||
"submit": "Submit",
|
||||
"fill_models": "Fill Related Models",
|
||||
"fill_all": "Fill All Models",
|
||||
"clear": "Clear All Models",
|
||||
"add_custom": "Add",
|
||||
"custom_placeholder": "Enter custom model name"
|
||||
},
|
||||
"messages": {
|
||||
"name_required": "Please enter channel name and key!",
|
||||
"models_required": "Please select at least one model!",
|
||||
"model_mapping_invalid": "Model mapping must be valid JSON format!",
|
||||
"update_success": "Channel updated successfully!",
|
||||
"create_success": "Channel created successfully!"
|
||||
},
|
||||
"spark_version": "Model Version",
|
||||
"spark_version_placeholder": "Please enter Spark model version from API URL, e.g.: v2.1",
|
||||
"knowledge_id": "Knowledge Base ID",
|
||||
"knowledge_id_placeholder": "Please enter knowledge base ID, e.g.: 123456",
|
||||
"plugin_param": "Plugin Parameter",
|
||||
"plugin_param_placeholder": "Please enter plugin parameter (X-DashScope-Plugin header value)",
|
||||
"coze_notice": "For Coze, model name is the Bot ID. You can add prefix `bot-`, e.g.: `bot-123456`.",
|
||||
"douban_notice": "For Douban, you need to go to",
|
||||
"douban_notice_link": "Model Inference Page",
|
||||
"douban_notice_2": "to create an inference endpoint, and use the endpoint name as model name, e.g.: `ep-20240608051426-tkxvl`.",
|
||||
"aws_region_placeholder": "region, e.g.: us-west-2",
|
||||
"aws_ak_placeholder": "AWS IAM Access Key",
|
||||
"aws_sk_placeholder": "AWS IAM Secret Key",
|
||||
"vertex_region_placeholder": "Vertex AI Region, e.g.: us-east5",
|
||||
"vertex_project_id": "Vertex AI Project ID",
|
||||
"vertex_project_id_placeholder": "Vertex AI Project ID",
|
||||
"vertex_credentials": "Google Cloud Application Default Credentials JSON",
|
||||
"vertex_credentials_placeholder": "Google Cloud Application Default Credentials JSON",
|
||||
"user_id": "User ID",
|
||||
"user_id_placeholder": "User ID who generated this key",
|
||||
"key_prompts": {
|
||||
"default": "Please enter the authentication key for this channel",
|
||||
"zhipu": "Enter in format: APIKey|SecretKey",
|
||||
"spark": "Enter in format: APPID|APISecret|APIKey",
|
||||
"fastgpt": "Enter in format: APIKey-AppId, e.g.: fastgpt-0sp2gtvfdgyi4k30jwlgwf1i-64f335d84283f05518e9e041",
|
||||
"tencent": "Enter in format: AppId|SecretId|SecretKey"
|
||||
}
|
||||
}
|
||||
},
|
||||
"token": {
|
||||
"title": "Token Management",
|
||||
"search": "Search tokens by name ...",
|
||||
"table": {
|
||||
"name": "Name",
|
||||
"status": "Status",
|
||||
"used_quota": "Used Quota",
|
||||
"remain_quota": "Remaining Quota",
|
||||
"created_time": "Created Time",
|
||||
"expired_time": "Expiry Time",
|
||||
"actions": "Actions",
|
||||
"no_name": "None",
|
||||
"never_expire": "Never Expires",
|
||||
"unlimited": "Unlimited",
|
||||
"status_enabled": "Enabled",
|
||||
"status_disabled": "Disabled",
|
||||
"status_expired": "Expired",
|
||||
"status_depleted": "Depleted",
|
||||
"status_unknown": "Unknown Status"
|
||||
},
|
||||
"buttons": {
|
||||
"copy": "Copy",
|
||||
"chat": "Chat",
|
||||
"delete": "Delete",
|
||||
"confirm_delete": "Delete Token",
|
||||
"enable": "Enable",
|
||||
"disable": "Disable",
|
||||
"edit": "Edit",
|
||||
"add": "Add New Token",
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"edit": {
|
||||
"title_edit": "Update Token Information",
|
||||
"title_create": "Create New Token",
|
||||
"name": "Name",
|
||||
"name_placeholder": "Please enter name",
|
||||
"models": "Model Scope",
|
||||
"models_placeholder": "Please select allowed models, leave empty for no restrictions",
|
||||
"ip_limit": "IP Restriction",
|
||||
"ip_limit_placeholder": "Please enter allowed subnets, e.g.: 192.168.0.0/24, use commas to separate multiple subnets",
|
||||
"expire_time": "Expiry Time",
|
||||
"expire_time_placeholder": "Please enter expiry time in yyyy-MM-dd HH:mm:ss format, -1 for no limit",
|
||||
"quota_notice": "Note: Token quota only limits the maximum usage of the token itself, actual usage is subject to account remaining quota.",
|
||||
"quota": "Quota",
|
||||
"quota_placeholder": "Please enter quota",
|
||||
"buttons": {
|
||||
"never_expire": "Never Expire",
|
||||
"expire_1_month": "Expire in 1 Month",
|
||||
"expire_1_day": "Expire in 1 Day",
|
||||
"expire_1_hour": "Expire in 1 Hour",
|
||||
"expire_1_minute": "Expire in 1 Minute",
|
||||
"unlimited_quota": "Set Unlimited Quota",
|
||||
"cancel_unlimited": "Cancel Unlimited Quota",
|
||||
"submit": "Submit",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"messages": {
|
||||
"update_success": "Token updated successfully!",
|
||||
"create_success": "Token created successfully, please copy it from the list page!",
|
||||
"expire_time_invalid": "Invalid expiry time format!"
|
||||
}
|
||||
},
|
||||
"copy_options": {
|
||||
"raw": "Copy Raw Token",
|
||||
"ama": "Copy AMA Link",
|
||||
"opencat": "Copy OpenCat Link",
|
||||
"next": "Copy NextChat Link",
|
||||
"lobe": "Copy LobeChat Link"
|
||||
},
|
||||
"messages": {
|
||||
"copy_success": "Copied to clipboard!",
|
||||
"copy_failed": "Unable to copy to clipboard, please copy manually. Token has been filled in the search box.",
|
||||
"operation_success": "Operation completed successfully!"
|
||||
},
|
||||
"sort": {
|
||||
"placeholder": "Sort By",
|
||||
"default": "Default Order",
|
||||
"by_remain": "Sort by Remaining Quota",
|
||||
"by_used": "Sort by Used Quota"
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"quota": {
|
||||
"display": "Equivalent: ${{amount}}",
|
||||
"display_short": "${{amount}}",
|
||||
"unit": "$"
|
||||
}
|
||||
},
|
||||
"redemption": {
|
||||
"title": "Redemption Management",
|
||||
"search": "Search redemption codes by ID and name ...",
|
||||
"table": {
|
||||
"id": "ID",
|
||||
"name": "Name",
|
||||
"status": "Status",
|
||||
"quota": "Quota",
|
||||
"created_time": "Created Time",
|
||||
"redeemed_time": "Redeemed Time",
|
||||
"actions": "Actions",
|
||||
"no_name": "None",
|
||||
"not_redeemed": "Not Redeemed"
|
||||
},
|
||||
"buttons": {
|
||||
"copy": "Copy",
|
||||
"delete": "Delete",
|
||||
"confirm_delete": "Confirm Delete",
|
||||
"enable": "Enable",
|
||||
"disable": "Disable",
|
||||
"edit": "Edit",
|
||||
"add": "Add New Code",
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"status": {
|
||||
"unused": "Unused",
|
||||
"disabled": "Disabled",
|
||||
"used": "Used",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"edit": {
|
||||
"title_edit": "Update Redemption Code",
|
||||
"title_create": "Create New Redemption Code",
|
||||
"name": "Name",
|
||||
"name_placeholder": "Please enter name",
|
||||
"quota": "Quota",
|
||||
"quota_placeholder": "Please enter quota per redemption code",
|
||||
"count": "Generate Count",
|
||||
"count_placeholder": "Please enter number of codes to generate",
|
||||
"buttons": {
|
||||
"submit": "Submit",
|
||||
"cancel": "Cancel"
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"update_success": "Redemption code updated successfully!",
|
||||
"create_success": "Redemption code created successfully!"
|
||||
}
|
||||
},
|
||||
"log": {
|
||||
"title": "Operation Log",
|
||||
"search": "Search logs...",
|
||||
"usage_details": "Usage Details",
|
||||
"total_quota": "Total Quota Used",
|
||||
"click_to_view": "Click to View",
|
||||
"type": {
|
||||
"select": "Select Log Type",
|
||||
"all": "All",
|
||||
"topup": "Top Up",
|
||||
"usage": "Usage",
|
||||
"admin": "Admin",
|
||||
"system": "System",
|
||||
"test": "Test"
|
||||
},
|
||||
"table": {
|
||||
"time": "Time",
|
||||
"channel": "Channel",
|
||||
"type": "Type",
|
||||
"model": "Model",
|
||||
"username": "Username",
|
||||
"token_name": "Token Name",
|
||||
"token_name_placeholder": "Optional",
|
||||
"model_name": "Model Name",
|
||||
"model_name_placeholder": "Optional",
|
||||
"start_time": "Start Time",
|
||||
"end_time": "End Time",
|
||||
"channel_id": "Channel ID",
|
||||
"channel_id_placeholder": "Optional",
|
||||
"username_placeholder": "Optional",
|
||||
"prompt_tokens": "Prompt Tokens",
|
||||
"completion_tokens": "Completion Tokens",
|
||||
"quota": "Quota",
|
||||
"detail": "Detail"
|
||||
},
|
||||
"buttons": {
|
||||
"query": "Action",
|
||||
"submit": "Query",
|
||||
"refresh": "Refresh"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"title": "User Management",
|
||||
"edit": {
|
||||
"title": "Update User Information",
|
||||
"username": "Username",
|
||||
"username_placeholder": "Please enter new username",
|
||||
"password": "Password",
|
||||
"password_placeholder": "Please enter new password, minimum 8 characters",
|
||||
"display_name": "Display Name",
|
||||
"display_name_placeholder": "Please enter new display name",
|
||||
"group": "Group",
|
||||
"group_placeholder": "Please select group",
|
||||
"group_addition": "Please edit group multipliers in system settings to add new group:",
|
||||
"quota": "Remaining Quota",
|
||||
"quota_placeholder": "Please enter new remaining quota",
|
||||
"github_id": "Linked GitHub Account",
|
||||
"github_id_placeholder": "Read-only, user must link through personal settings page, cannot be modified directly",
|
||||
"wechat_id": "Linked WeChat Account",
|
||||
"wechat_id_placeholder": "Read-only, user must link through personal settings page, cannot be modified directly",
|
||||
"email": "Linked Email Account",
|
||||
"email_placeholder": "Read-only, user must link through personal settings page, cannot be modified directly",
|
||||
"buttons": {
|
||||
"submit": "Submit",
|
||||
"cancel": "Cancel"
|
||||
}
|
||||
},
|
||||
"add": {
|
||||
"title": "Create New User Account"
|
||||
},
|
||||
"messages": {
|
||||
"update_success": "User information updated successfully!",
|
||||
"create_success": "User account created successfully!",
|
||||
"operation_success": "Operation completed successfully!"
|
||||
},
|
||||
"search": "Search users...",
|
||||
"table": {
|
||||
"id": "ID",
|
||||
"username": "Username",
|
||||
"group": "Group",
|
||||
"quota": "Quota",
|
||||
"role_text": "Role",
|
||||
"status_text": "Status",
|
||||
"actions": "Actions",
|
||||
"remaining_quota": "Remaining Quota",
|
||||
"used_quota": "Used Quota",
|
||||
"request_count": "Request Count",
|
||||
"role_types": {
|
||||
"normal": "Normal User",
|
||||
"admin": "Admin",
|
||||
"super_admin": "Super Admin",
|
||||
"unknown": "Unknown Role"
|
||||
},
|
||||
"status_types": {
|
||||
"activated": "Activated",
|
||||
"banned": "Banned",
|
||||
"unknown": "Unknown Status"
|
||||
},
|
||||
"sort": {
|
||||
"default": "Default Order",
|
||||
"by_quota": "Sort by Remaining Quota",
|
||||
"by_used_quota": "Sort by Used Quota",
|
||||
"by_request_count": "Sort by Request Count"
|
||||
},
|
||||
"sort_by": "Sort By"
|
||||
},
|
||||
"buttons": {
|
||||
"add": "Add New User",
|
||||
"delete": "Delete",
|
||||
"delete_user": "Delete User",
|
||||
"enable": "Enable",
|
||||
"disable": "Disable",
|
||||
"edit": "Edit",
|
||||
"promote": "Promote",
|
||||
"demote": "Demote"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"charts": {
|
||||
"requests": {
|
||||
"title": "Model Request Trend",
|
||||
"tooltip": "Request Count"
|
||||
},
|
||||
"quota": {
|
||||
"title": "Quota Usage Trend",
|
||||
"tooltip": "Quota Used"
|
||||
},
|
||||
"tokens": {
|
||||
"title": "Token Usage Trend",
|
||||
"tooltip": "Token Count"
|
||||
}
|
||||
},
|
||||
"statistics": {
|
||||
"title": "Statistics",
|
||||
"tooltip": {
|
||||
"date": "Date",
|
||||
"value": "Value"
|
||||
}
|
||||
}
|
||||
},
|
||||
"setting": {
|
||||
"title": "System Settings",
|
||||
"tabs": {
|
||||
"personal": "Personal Settings",
|
||||
"operation": "Operation Settings",
|
||||
"system": "System Settings",
|
||||
"other": "Other Settings"
|
||||
},
|
||||
"personal": {
|
||||
"general": {
|
||||
"title": "General Settings",
|
||||
"system_token_notice": "Note: The token generated here is for system management, not for requesting OpenAI related services.",
|
||||
"buttons": {
|
||||
"update_profile": "Update Profile",
|
||||
"generate_token": "Generate System Token",
|
||||
"copy_invite": "Copy Invite Link",
|
||||
"delete_account": "Delete Account"
|
||||
}
|
||||
},
|
||||
"binding": {
|
||||
"title": "Account Binding",
|
||||
"buttons": {
|
||||
"bind_wechat": "Bind WeChat Account",
|
||||
"bind_github": "Bind GitHub Account",
|
||||
"bind_email": "Bind Email Address",
|
||||
"bind_lark": "Bind Lark Account"
|
||||
},
|
||||
"wechat": {
|
||||
"title": "WeChat Binding",
|
||||
"description": "Scan QR code to follow the official account, enter 'verification code' to get the code (valid for 3 minutes)",
|
||||
"verification_code": "Verification Code",
|
||||
"bind": "Bind"
|
||||
},
|
||||
"email": {
|
||||
"title": "Bind Email Address",
|
||||
"email_placeholder": "Enter email address",
|
||||
"code_placeholder": "Verification code",
|
||||
"get_code": "Get Code",
|
||||
"get_code_retry": "Resend({{countdown}})",
|
||||
"bind": "Confirm Binding",
|
||||
"cancel": "Cancel"
|
||||
}
|
||||
},
|
||||
"delete_account": {
|
||||
"title": "Dangerous Operation",
|
||||
"warning": "You are deleting your account. All data will be cleared and cannot be recovered",
|
||||
"confirm_placeholder": "Enter your username {{username}} to confirm deletion",
|
||||
"buttons": {
|
||||
"confirm": "Confirm Delete",
|
||||
"cancel": "Cancel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system": {
|
||||
"general": {
|
||||
"title": "General Settings",
|
||||
"server_address": "Server Address",
|
||||
"server_address_placeholder": "e.g.: https://yourdomain.com",
|
||||
"buttons": {
|
||||
"update": "Update Server Address"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"title": "Login & Registration Settings",
|
||||
"password_login": "Allow Password Login",
|
||||
"password_register": "Allow Password Registration",
|
||||
"email_verification": "Require Email Verification for Password Registration",
|
||||
"github_oauth": "Allow GitHub OAuth Login & Registration",
|
||||
"wechat_login": "Allow WeChat Login & Registration",
|
||||
"registration": "Allow New User Registration (When disabled, new users cannot register by any means)",
|
||||
"turnstile": "Enable Turnstile User Verification"
|
||||
},
|
||||
"email_restriction": {
|
||||
"title": "Email Domain Whitelist",
|
||||
"subtitle": "Used to prevent malicious users from batch registering using temporary emails",
|
||||
"enable": "Enable Email Domain Whitelist",
|
||||
"allowed_domains": "Allowed Email Domains",
|
||||
"add_domain": "Add New Allowed Email Domain",
|
||||
"add_domain_placeholder": "Enter new allowed email domain",
|
||||
"buttons": {
|
||||
"fill": "Fill",
|
||||
"save": "Save Email Domain Whitelist Settings"
|
||||
}
|
||||
},
|
||||
"smtp": {
|
||||
"title": "SMTP Configuration",
|
||||
"subtitle": "Used to support system email sending",
|
||||
"server": "SMTP Server Address",
|
||||
"server_placeholder": "e.g.: smtp.gmail.com",
|
||||
"port": "SMTP Port",
|
||||
"port_placeholder": "Default: 587",
|
||||
"account": "SMTP Account",
|
||||
"account_placeholder": "Usually your email address",
|
||||
"from": "SMTP Sender Email",
|
||||
"from_placeholder": "Usually same as email address",
|
||||
"token": "SMTP Access Token",
|
||||
"token_placeholder": "Sensitive information will not be sent to frontend",
|
||||
"buttons": {
|
||||
"save": "Save SMTP Settings"
|
||||
}
|
||||
},
|
||||
"github": {
|
||||
"title": "GitHub OAuth App Configuration",
|
||||
"subtitle": "Used to support GitHub login and registration",
|
||||
"manage_link": "Click here",
|
||||
"manage_text": "to manage your GitHub OAuth Apps",
|
||||
"url_notice": "Set Homepage URL to {{server_url}}, and Authorization callback URL to {{callback_url}}",
|
||||
"client_id": "GitHub Client ID",
|
||||
"client_id_placeholder": "Enter your registered GitHub OAuth APP ID",
|
||||
"client_secret": "GitHub Client Secret",
|
||||
"client_secret_placeholder": "Sensitive information will not be sent to frontend",
|
||||
"buttons": {
|
||||
"save": "Save GitHub OAuth Settings"
|
||||
}
|
||||
},
|
||||
"lark": {
|
||||
"title": "Lark OAuth Configuration",
|
||||
"subtitle": "Used to support Lark login and registration",
|
||||
"manage_link": "Click here",
|
||||
"manage_text": "to manage your Lark applications",
|
||||
"url_notice": "Set Homepage URL to {{server_url}}, and Redirect URL to {{callback_url}}",
|
||||
"client_id": "App ID",
|
||||
"client_id_placeholder": "Enter App ID",
|
||||
"client_secret": "App Secret",
|
||||
"client_secret_placeholder": "Sensitive information will not be sent to frontend",
|
||||
"buttons": {
|
||||
"save": "Save Lark OAuth Settings"
|
||||
}
|
||||
},
|
||||
"wechat": {
|
||||
"title": "WeChat Server Configuration",
|
||||
"subtitle": "Used to support WeChat login and registration",
|
||||
"learn_more": "Learn about WeChat Server",
|
||||
"server_address": "WeChat Server Address",
|
||||
"server_address_placeholder": "e.g.: https://yourdomain.com",
|
||||
"token": "WeChat Server Access Token",
|
||||
"token_placeholder": "Sensitive information will not be sent to frontend",
|
||||
"qrcode": "WeChat Official Account QR Code Image URL",
|
||||
"qrcode_placeholder": "Enter an image URL",
|
||||
"buttons": {
|
||||
"save": "Save WeChat Server Settings"
|
||||
},
|
||||
"scan_tip": "Scan QR code to follow WeChat Official Account, enter 'code' to get verification code (valid for 3 minutes)",
|
||||
"code_placeholder": "Verification code"
|
||||
},
|
||||
"turnstile": {
|
||||
"title": "Turnstile Configuration",
|
||||
"subtitle": "Used to support user verification",
|
||||
"manage_link": "Click here",
|
||||
"manage_text": "to manage your Turnstile Sites, Invisible Widget Type recommended",
|
||||
"site_key": "Turnstile Site Key",
|
||||
"site_key_placeholder": "Enter your registered Turnstile Site Key",
|
||||
"secret_key": "Turnstile Secret Key",
|
||||
"secret_key_placeholder": "Sensitive information will not be sent to frontend",
|
||||
"buttons": {
|
||||
"save": "Save Turnstile Settings"
|
||||
}
|
||||
},
|
||||
"password_login": {
|
||||
"warning": {
|
||||
"title": "Warning",
|
||||
"content": "Disabling password login will prevent all users (including administrators) who haven't bound other login methods from logging in via password. Confirm disable?",
|
||||
"buttons": {
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"operation": {
|
||||
"quota": {
|
||||
"title": "Quota Settings",
|
||||
"new_user": "Initial Quota for New Users",
|
||||
"new_user_placeholder": "e.g.: 100",
|
||||
"pre_consume": "Pre-consumed Quota per Request",
|
||||
"pre_consume_placeholder": "Refund or charge difference after request",
|
||||
"inviter_reward": "Reward Quota for Inviter",
|
||||
"inviter_reward_placeholder": "e.g.: 2000",
|
||||
"invitee_reward": "Reward Quota for Using Invite Code",
|
||||
"invitee_reward_placeholder": "e.g.: 1000",
|
||||
"buttons": {
|
||||
"save": "Save Quota Settings"
|
||||
}
|
||||
},
|
||||
"ratio": {
|
||||
"title": "Ratio Settings",
|
||||
"model": {
|
||||
"title": "Model Ratio",
|
||||
"placeholder": "A JSON text where keys are model names and values are ratios"
|
||||
},
|
||||
"completion": {
|
||||
"title": "Completion Ratio",
|
||||
"placeholder": "A JSON text where keys are model names and values are ratios. These ratios are the proportion of completion to prompt ratio, which can override One API's internal ratios"
|
||||
},
|
||||
"group": {
|
||||
"title": "Group Ratio",
|
||||
"placeholder": "A JSON text where keys are group names and values are ratios"
|
||||
},
|
||||
"buttons": {
|
||||
"save": "Save Ratio Settings"
|
||||
}
|
||||
},
|
||||
"log": {
|
||||
"title": "Log Settings",
|
||||
"enable_consume": "Enable Quota Consumption Logging",
|
||||
"target_time": "Target Time",
|
||||
"buttons": {
|
||||
"clean": "Clean Historical Logs"
|
||||
}
|
||||
},
|
||||
"monitor": {
|
||||
"title": "Monitor Settings",
|
||||
"max_response_time": "Maximum Response Time",
|
||||
"max_response_time_placeholder": "In seconds, channels exceeding this time during testing will be automatically disabled",
|
||||
"quota_reminder": "Quota Reminder Threshold",
|
||||
"quota_reminder_placeholder": "Users will receive email reminders when quota falls below this value",
|
||||
"auto_disable": "Automatically Disable Channel on Failure",
|
||||
"auto_enable": "Automatically Enable Channel on Success",
|
||||
"buttons": {
|
||||
"save": "Save Monitor Settings"
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"title": "General Settings",
|
||||
"topup_link": "Top-up Link",
|
||||
"topup_link_placeholder": "e.g.: Card selling website purchase link",
|
||||
"chat_link": "Chat Page Link",
|
||||
"chat_link_placeholder": "e.g.: ChatGPT Next Web deployment address",
|
||||
"quota_per_unit": "Quota per Dollar",
|
||||
"quota_per_unit_placeholder": "Quota exchangeable per unit of currency",
|
||||
"retry_times": "Retry Times on Failure",
|
||||
"retry_times_placeholder": "Number of retry attempts on failure",
|
||||
"display_in_currency": "Display Quota in Currency Format",
|
||||
"display_token_stat": "Show Token Quota Instead of User Quota in Billing APIs",
|
||||
"approximate_token": "Use Approximate Method to Estimate Token Count",
|
||||
"buttons": {
|
||||
"save": "Save General Settings"
|
||||
}
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"notice": {
|
||||
"title": "Notice Settings",
|
||||
"content": "Notice Content",
|
||||
"content_placeholder": "Enter new notice content here, supports Markdown & HTML code",
|
||||
"buttons": {
|
||||
"save": "Save Notice"
|
||||
}
|
||||
},
|
||||
"system": {
|
||||
"title": "System Settings",
|
||||
"name": "System Name",
|
||||
"name_placeholder": "Please enter system name",
|
||||
"logo": "Logo Image URL",
|
||||
"logo_placeholder": "Enter Logo image URL here",
|
||||
"theme": {
|
||||
"title": "Theme Name",
|
||||
"link": "Available Themes",
|
||||
"placeholder": "Please enter theme name"
|
||||
},
|
||||
"buttons": {
|
||||
"save_name": "Set System Name",
|
||||
"save_logo": "Set Logo",
|
||||
"save_theme": "Set Theme (Restart Required)"
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"title": "Content Settings",
|
||||
"homepage": {
|
||||
"title": "Homepage Content",
|
||||
"placeholder": "Enter homepage content here, supports Markdown & HTML code. Status information will not be shown after setting. If a link is entered, it will be used as the src attribute of an iframe, allowing you to set any webpage as homepage."
|
||||
},
|
||||
"about": {
|
||||
"title": "About System",
|
||||
"description": "You can set about content in settings page, supports HTML & Markdown",
|
||||
"repository": "Project Repository:",
|
||||
"loading_failed": "Failed to load about content..."
|
||||
},
|
||||
"footer": {
|
||||
"title": "Footer",
|
||||
"placeholder": "Enter new footer here, leave empty to use default footer, supports HTML code"
|
||||
},
|
||||
"buttons": {
|
||||
"save_homepage": "Save Homepage Content",
|
||||
"save_about": "Save About",
|
||||
"save_footer": "Set Footer"
|
||||
}
|
||||
},
|
||||
"copyright": {
|
||||
"notice": "Removing One API's copyright notice requires authorization. Project maintenance requires significant effort, if this project is meaningful to you, please actively support it."
|
||||
}
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"built_by": "built by",
|
||||
"built_by_name": "JustSong",
|
||||
"license": ", source code is licensed under the",
|
||||
"mit": "MIT License"
|
||||
},
|
||||
"home": {
|
||||
"welcome": {
|
||||
"title": "Welcome to One API",
|
||||
"description": "One API is a LLM API management and distribution system that helps you better manage and use LLM APIs from various providers.",
|
||||
"login_notice": "To use the service, please login or register first."
|
||||
},
|
||||
"system_status": {
|
||||
"title": "System Status",
|
||||
"info": {
|
||||
"title": "System Information",
|
||||
"name": "Name: ",
|
||||
"version": "Version: ",
|
||||
"source": "Source: ",
|
||||
"source_link": "GitHub Repository",
|
||||
"start_time": "Start Time: "
|
||||
},
|
||||
"config": {
|
||||
"title": "System Configuration",
|
||||
"email_verify": "Email Verification: ",
|
||||
"github_oauth": "GitHub OAuth: ",
|
||||
"wechat_login": "WeChat Login: ",
|
||||
"turnstile": "Turnstile Check: ",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled"
|
||||
}
|
||||
},
|
||||
"loading_failed": "Failed to load homepage content..."
|
||||
},
|
||||
"auth": {
|
||||
"login": {
|
||||
"title": "User Login",
|
||||
"username": "Username / Email",
|
||||
"password": "Password",
|
||||
"button": "Login",
|
||||
"forgot_password": "Forgot password?",
|
||||
"reset_password": "Reset",
|
||||
"no_account": "No account?",
|
||||
"register": "Register",
|
||||
"other_methods": "Other login methods",
|
||||
"wechat": {
|
||||
"scan_tip": "Scan QR code to follow WeChat Official Account, enter 'code' to get verification code (valid for 3 minutes)",
|
||||
"code_placeholder": "Verification code"
|
||||
}
|
||||
},
|
||||
"register": {
|
||||
"title": "New User Registration",
|
||||
"username": "Username (max 12 characters)",
|
||||
"password": "Password (8-20 characters)",
|
||||
"confirm_password": "Confirm password",
|
||||
"email": "Email address",
|
||||
"verification_code": "Verification code",
|
||||
"get_code": "Get code",
|
||||
"get_code_retry": "Retry ({{countdown}})",
|
||||
"button": "Register",
|
||||
"has_account": "Have an account?",
|
||||
"login": "Login"
|
||||
},
|
||||
"reset": {
|
||||
"title": "Password Reset",
|
||||
"email": "Email address",
|
||||
"button": "Submit",
|
||||
"notice": "The system will send an email containing a reset link to your mailbox. Please check your email.",
|
||||
"confirm": {
|
||||
"title": "Password Reset Confirmation",
|
||||
"new_password": "New password",
|
||||
"button": "Submit",
|
||||
"button_disabled": "Password reset completed",
|
||||
"notice": "New password has been generated, please click the password field or button above to copy. Please login and change your password as soon as possible!"
|
||||
}
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"title": "About",
|
||||
"description": "One API is an open-source API management and proxy platform.",
|
||||
"repository": "Repository: ",
|
||||
"loading_failed": "Loading failed"
|
||||
},
|
||||
"messages": {
|
||||
"success": {
|
||||
"login": "Login successful!",
|
||||
"register": "Registration successful!",
|
||||
"verification_code": "Verification code sent, please check your email!",
|
||||
"password_reset": "Reset email sent, please check your inbox!"
|
||||
},
|
||||
"error": {
|
||||
"login_expired": "Not logged in or session expired, please login again!",
|
||||
"password_length": "Password must be at least 8 characters!",
|
||||
"password_mismatch": "Passwords do not match",
|
||||
"turnstile_wait": "Please wait a few seconds, Turnstile is checking the environment!",
|
||||
"root_password": "Please change the default password immediately!"
|
||||
},
|
||||
"notice": {
|
||||
"password_copied": "New password copied to clipboard: {{password}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,823 +0,0 @@
|
||||
{
|
||||
"header": {
|
||||
"home": "首页",
|
||||
"channel": "渠道",
|
||||
"token": "令牌",
|
||||
"redemption": "兑换",
|
||||
"topup": "充值",
|
||||
"user": "用户",
|
||||
"dashboard": "总览",
|
||||
"log": "日志",
|
||||
"setting": "设置",
|
||||
"about": "关于",
|
||||
"chat": "聊天",
|
||||
"login": "登录",
|
||||
"logout": "注销",
|
||||
"register": "注册"
|
||||
},
|
||||
"topup": {
|
||||
"title": "充值中心",
|
||||
"get_code": {
|
||||
"title": "获取兑换码",
|
||||
"current_quota": "当前可用额度",
|
||||
"button": "立即获取兑换码"
|
||||
},
|
||||
"redeem_code": {
|
||||
"title": "兑换码充值",
|
||||
"placeholder": "请输入兑换码",
|
||||
"paste": "粘贴",
|
||||
"paste_error": "无法访问剪贴板,请手动粘贴",
|
||||
"submit": "立即兑换",
|
||||
"submitting": "兑换中...",
|
||||
"empty_code": "请输入兑换码!",
|
||||
"success": "充值成功!",
|
||||
"request_failed": "请求失败",
|
||||
"no_link": "超级管理员未设置充值链接!"
|
||||
}
|
||||
},
|
||||
"channel": {
|
||||
"title": "管理渠道",
|
||||
"search": "搜索渠道的 ID,名称和密钥 ...",
|
||||
"balance_notice": "OpenAI 渠道已经不再支持通过 key 获取余额,因此余额显示为 0。对于支持的渠道类型,请点击余额进行刷新。",
|
||||
"test_notice": "渠道测试仅支持 chat 模型,优先使用 gpt-3.5-turbo,如果该模型不可用则使用你所配置的模型列表中的第一个模型。",
|
||||
"detail_notice": "点击下方详情按钮可以显示余额以及设置额外的测试模型。",
|
||||
"table": {
|
||||
"id": "ID",
|
||||
"name": "名称",
|
||||
"group": "分组",
|
||||
"type": "类型",
|
||||
"status": "状态",
|
||||
"response_time": "响应时间",
|
||||
"balance": "余额",
|
||||
"priority": "优先级",
|
||||
"test_model": "测试模型",
|
||||
"actions": "操作",
|
||||
"no_name": "无",
|
||||
"status_enabled": "已启用",
|
||||
"status_disabled": "已禁用",
|
||||
"status_auto_disabled": "已禁用",
|
||||
"status_disabled_tip": "本渠道被手动禁用",
|
||||
"status_auto_disabled_tip": "本渠道被程序自动禁用",
|
||||
"status_unknown": "未知状态",
|
||||
"not_tested": "未测试",
|
||||
"priority_tip": "渠道选择优先级,越高越优先",
|
||||
"select_test_model": "请选择测试模型",
|
||||
"click_to_update": "点击更新"
|
||||
},
|
||||
"buttons": {
|
||||
"test": "测试",
|
||||
"delete": "删除",
|
||||
"confirm_delete": "删除渠道",
|
||||
"enable": "启用",
|
||||
"disable": "禁用",
|
||||
"edit": "编辑",
|
||||
"add": "添加新的渠道",
|
||||
"test_all": "测试所有渠道",
|
||||
"test_disabled": "测试禁用渠道",
|
||||
"delete_disabled": "删除禁用渠道",
|
||||
"confirm_delete_disabled": "确认删除",
|
||||
"refresh": "刷新",
|
||||
"show_detail": "详情",
|
||||
"hide_detail": "隐藏详情"
|
||||
},
|
||||
"messages": {
|
||||
"test_success": "渠道 {{name}} 测试成功,模型 {{model}},耗时 {{time}} 秒,模型输出:{{message}}",
|
||||
"test_all_started": "已成功开始测试渠道,请刷新页面查看结果。",
|
||||
"delete_disabled_success": "已删除所有禁用渠道,共计 {{count}} 个",
|
||||
"balance_update_success": "渠道 {{name}} 余额更新成功!",
|
||||
"all_balance_updated": "已更新完毕所有已启用渠道余额!"
|
||||
},
|
||||
"edit": {
|
||||
"title_edit": "更新渠道信息",
|
||||
"title_create": "创建新的渠道",
|
||||
"type": "类型",
|
||||
"name": "名称",
|
||||
"name_placeholder": "请输入名称",
|
||||
"group": "分组",
|
||||
"group_placeholder": "请选择可以使用该渠道的分组",
|
||||
"group_addition": "请在系统设置页面编辑分组倍率以添加新的分组:",
|
||||
"models": "模型",
|
||||
"models_placeholder": "请选择该渠道所支持的模型",
|
||||
"model_mapping": "模型重定向",
|
||||
"model_mapping_placeholder": "此项可选,用于修改请求体中的模型名称,为一个 JSON 字符串,键为请求中模型名称,值为要替换的模型名称",
|
||||
"system_prompt": "系统提示词",
|
||||
"system_prompt_placeholder": "此项可选,用于强制设置给定的系统提示词,请配合自定义模型 & 模型重定向使用,首先创建一个唯一的自定义模型名称并在上面填入,之后将该自定义模型重定向映射到该渠道一个原生支持的模型",
|
||||
"base_url": "代理",
|
||||
"base_url_placeholder": "此项可选,用于通过代理站来进行 API 调用,请输入代理站地址,格式为:https://domain.com",
|
||||
"key": "密钥",
|
||||
"key_placeholder": "请输入密钥",
|
||||
"batch": "批量创建",
|
||||
"batch_placeholder": "请输入密钥,一行一个",
|
||||
"buttons": {
|
||||
"cancel": "取消",
|
||||
"submit": "提交",
|
||||
"fill_models": "填入相关模型",
|
||||
"fill_all": "填入所有模型",
|
||||
"clear": "清除所有模型",
|
||||
"add_custom": "填入",
|
||||
"custom_placeholder": "输入自定义模型名称"
|
||||
},
|
||||
"messages": {
|
||||
"name_required": "请填写渠道名称和渠道密钥!",
|
||||
"models_required": "请至少选择一个模型!",
|
||||
"model_mapping_invalid": "模型映射必须是合法的 JSON 格式!",
|
||||
"update_success": "渠道更新成功!",
|
||||
"create_success": "渠道创建成功!"
|
||||
},
|
||||
"spark_version": "模型版本",
|
||||
"spark_version_placeholder": "请输入星火大模型版本,注意是接口地址中的版本号,例如:v2.1",
|
||||
"knowledge_id": "知识库 ID",
|
||||
"knowledge_id_placeholder": "请输入知识库 ID,例如:123456",
|
||||
"plugin_param": "插件参数",
|
||||
"plugin_param_placeholder": "请输入插件参数,即 X-DashScope-Plugin 请求头的取值",
|
||||
"coze_notice": "对于 Coze 而言,模型名称即 Bot ID,你可以添加一个前缀 `bot-`,例如:`bot-123456`。",
|
||||
"douban_notice": "对于豆包而言,需要手动去",
|
||||
"douban_notice_link": "模型推理页面",
|
||||
"douban_notice_2": "创建推理接入点,以接入点名称作为模型名称,例如:`ep-20240608051426-tkxvl`。",
|
||||
"aws_region_placeholder": "region,例如:us-west-2",
|
||||
"aws_ak_placeholder": "AWS IAM Access Key",
|
||||
"aws_sk_placeholder": "AWS IAM Secret Key",
|
||||
"vertex_region_placeholder": "Vertex AI Region,例如:us-east5",
|
||||
"vertex_project_id": "Vertex AI Project ID",
|
||||
"vertex_project_id_placeholder": "Vertex AI Project ID",
|
||||
"vertex_credentials": "Google Cloud Application Default Credentials JSON",
|
||||
"vertex_credentials_placeholder": "Google Cloud Application Default Credentials JSON",
|
||||
"user_id": "User ID",
|
||||
"user_id_placeholder": "生成该密钥的用户 ID",
|
||||
"key_prompts": {
|
||||
"default": "请输入渠道对应的鉴权密钥",
|
||||
"zhipu": "按照如下格式输入:APIKey|SecretKey",
|
||||
"spark": "按照如下格式输入:APPID|APISecret|APIKey",
|
||||
"fastgpt": "按照如下格式输入:APIKey-AppId,例如:fastgpt-0sp2gtvfdgyi4k30jwlgwf1i-64f335d84283f05518e9e041",
|
||||
"tencent": "按照如下格式输入:AppId|SecretId|SecretKey"
|
||||
}
|
||||
}
|
||||
},
|
||||
"token": {
|
||||
"title": "令牌管理",
|
||||
"search": "搜索令牌的名称 ...",
|
||||
"table": {
|
||||
"name": "名称",
|
||||
"status": "状态",
|
||||
"used_quota": "已用额度",
|
||||
"remain_quota": "剩余额度",
|
||||
"created_time": "创建时间",
|
||||
"expired_time": "过期时间",
|
||||
"actions": "操作",
|
||||
"no_name": "无",
|
||||
"never_expire": "永不过期",
|
||||
"unlimited": "无限制",
|
||||
"status_enabled": "已启用",
|
||||
"status_disabled": "已禁用",
|
||||
"status_expired": "已过期",
|
||||
"status_depleted": "已耗尽",
|
||||
"status_unknown": "未知状态"
|
||||
},
|
||||
"buttons": {
|
||||
"copy": "复制",
|
||||
"chat": "聊天",
|
||||
"delete": "删除",
|
||||
"confirm_delete": "删除令牌",
|
||||
"enable": "启用",
|
||||
"disable": "禁用",
|
||||
"edit": "编辑",
|
||||
"add": "添加新的令牌",
|
||||
"refresh": "刷新"
|
||||
},
|
||||
"edit": {
|
||||
"title_edit": "更新令牌信息",
|
||||
"title_create": "创建新的令牌",
|
||||
"name": "名称",
|
||||
"name_placeholder": "请输入名称",
|
||||
"models": "模型范围",
|
||||
"models_placeholder": "请选择允许使用的模型,留空则不进行限制",
|
||||
"ip_limit": "IP 限制",
|
||||
"ip_limit_placeholder": "请输入允许访问的网段,例如:192.168.0.0/24,请使用英文逗号分隔多个网段",
|
||||
"expire_time": "过期时间",
|
||||
"expire_time_placeholder": "请输入过期时间,格式为 yyyy-MM-dd HH:mm:ss,-1 表示无限制",
|
||||
"quota_notice": "注意,令牌的额度仅用于限制令牌本身的最大额度使用量,实际的使用受到账户的剩余额度限制。",
|
||||
"quota": "额度",
|
||||
"quota_placeholder": "请输入额度",
|
||||
"buttons": {
|
||||
"never_expire": "永不过期",
|
||||
"expire_1_month": "一个月后过期",
|
||||
"expire_1_day": "一天后过期",
|
||||
"expire_1_hour": "一小时后过期",
|
||||
"expire_1_minute": "一分钟后过期",
|
||||
"unlimited_quota": "设为无限额度",
|
||||
"cancel_unlimited": "取消无限额度",
|
||||
"submit": "提交",
|
||||
"cancel": "取消"
|
||||
},
|
||||
"messages": {
|
||||
"update_success": "令牌更新成功!",
|
||||
"create_success": "令牌创建成功,请在列表页面点击复制获取令牌!",
|
||||
"expire_time_invalid": "过期时间格式错误!"
|
||||
}
|
||||
},
|
||||
"copy_options": {
|
||||
"raw": "复制原始令牌",
|
||||
"ama": "复制 AMA 链接",
|
||||
"opencat": "复制 OpenCat 链接",
|
||||
"next": "复制 NextChat 链接",
|
||||
"lobe": "复制 LobeChat 链接"
|
||||
},
|
||||
"messages": {
|
||||
"copy_success": "已复制到剪贴板!",
|
||||
"copy_failed": "无法复制到剪贴板,请手动复制,已将令牌填入搜索框。",
|
||||
"operation_success": "操作成功完成!"
|
||||
},
|
||||
"sort": {
|
||||
"placeholder": "排序方式",
|
||||
"default": "默认排序",
|
||||
"by_remain": "按剩余额度排序",
|
||||
"by_used": "按已用额度排序"
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"quota": {
|
||||
"display": "等价金额:${{amount}}",
|
||||
"display_short": "${{amount}}",
|
||||
"unit": "$"
|
||||
}
|
||||
},
|
||||
"redemption": {
|
||||
"title": "兑换管理",
|
||||
"search": "搜索兑换码的 ID 和名称 ...",
|
||||
"table": {
|
||||
"id": "ID",
|
||||
"name": "名称",
|
||||
"status": "状态",
|
||||
"quota": "额度",
|
||||
"created_time": "创建时间",
|
||||
"redeemed_time": "兑换时间",
|
||||
"actions": "操作",
|
||||
"no_name": "无",
|
||||
"not_redeemed": "尚未兑换"
|
||||
},
|
||||
"buttons": {
|
||||
"copy": "复制",
|
||||
"delete": "删除",
|
||||
"confirm_delete": "确认删除",
|
||||
"enable": "启用",
|
||||
"disable": "禁用",
|
||||
"edit": "编辑",
|
||||
"add": "添加新的兑换码",
|
||||
"refresh": "刷新"
|
||||
},
|
||||
"status": {
|
||||
"unused": "未使用",
|
||||
"disabled": "已禁用",
|
||||
"used": "已使用",
|
||||
"unknown": "未知状态"
|
||||
},
|
||||
"edit": {
|
||||
"title_edit": "更新兑换码信息",
|
||||
"title_create": "创建新的兑换码",
|
||||
"name": "名称",
|
||||
"name_placeholder": "请输入名称",
|
||||
"quota": "额度",
|
||||
"quota_placeholder": "请输入单个兑换码中包含的额度",
|
||||
"count": "生成数量",
|
||||
"count_placeholder": "请输入生成数量",
|
||||
"buttons": {
|
||||
"submit": "提交",
|
||||
"cancel": "取消"
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"update_success": "兑换码更新成功!",
|
||||
"create_success": "兑换码创建成功!"
|
||||
}
|
||||
},
|
||||
"log": {
|
||||
"title": "操作日志",
|
||||
"search": "搜索日志...",
|
||||
"usage_details": "使用明细",
|
||||
"total_quota": "总消耗额度",
|
||||
"click_to_view": "点击查看",
|
||||
"type": {
|
||||
"select": "选择明细分类",
|
||||
"all": "全部",
|
||||
"topup": "充值",
|
||||
"usage": "消费",
|
||||
"admin": "管理",
|
||||
"system": "系统",
|
||||
"test": "测试"
|
||||
},
|
||||
"table": {
|
||||
"time": "时间",
|
||||
"channel": "渠道",
|
||||
"type": "类型",
|
||||
"model": "模型",
|
||||
"username": "用户名",
|
||||
"token_name": "令牌名称",
|
||||
"token_name_placeholder": "可选值",
|
||||
"model_name": "模型名称",
|
||||
"model_name_placeholder": "可选值",
|
||||
"start_time": "起始时间",
|
||||
"end_time": "结束时间",
|
||||
"channel_id": "渠道 ID",
|
||||
"channel_id_placeholder": "可选值",
|
||||
"username_placeholder": "可选值",
|
||||
"prompt_tokens": "提示词消耗",
|
||||
"completion_tokens": "补全消耗",
|
||||
"quota": "额度",
|
||||
"detail": "详情"
|
||||
},
|
||||
"buttons": {
|
||||
"query": "操作",
|
||||
"submit": "查询",
|
||||
"refresh": "刷新"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"title": "用户管理",
|
||||
"edit": {
|
||||
"title": "更新用户信息",
|
||||
"username": "用户名",
|
||||
"username_placeholder": "请输入新的用户名",
|
||||
"password": "密码",
|
||||
"password_placeholder": "请输入新的密码,最短 8 位",
|
||||
"display_name": "显示名称",
|
||||
"display_name_placeholder": "请输入新的显示名称",
|
||||
"group": "分组",
|
||||
"group_placeholder": "请选择分组",
|
||||
"group_addition": "请在系统设置页面编辑分组倍率以添加新的分组:",
|
||||
"quota": "剩余额度",
|
||||
"quota_placeholder": "请输入新的剩余额度",
|
||||
"github_id": "已绑定的 GitHub 账户",
|
||||
"github_id_placeholder": "此项只读,需要用户通过个人设置页面的相关绑定按钮进行绑定,不可直接修改",
|
||||
"wechat_id": "已绑定的微信账户",
|
||||
"wechat_id_placeholder": "此项只读,需要用户通过个人设置页面的相关绑定按钮进行绑定,不可直接修改",
|
||||
"email": "已绑定的邮箱账户",
|
||||
"email_placeholder": "此项只读,需要用户通过个人设置页面的相关绑定按钮进行绑定,不可直接修改",
|
||||
"buttons": {
|
||||
"submit": "提交",
|
||||
"cancel": "取消"
|
||||
}
|
||||
},
|
||||
"add": {
|
||||
"title": "创建新用户账户"
|
||||
},
|
||||
"messages": {
|
||||
"update_success": "用户信息更新成功!",
|
||||
"create_success": "用户账户创建成功!",
|
||||
"operation_success": "操作成功完成!"
|
||||
},
|
||||
"search": "搜索用户...",
|
||||
"table": {
|
||||
"id": "ID",
|
||||
"username": "用户名",
|
||||
"group": "分组",
|
||||
"quota": "额度",
|
||||
"role_text": "角色",
|
||||
"status_text": "状态",
|
||||
"actions": "操作",
|
||||
"remaining_quota": "剩余额度",
|
||||
"used_quota": "已用额度",
|
||||
"request_count": "请求次数",
|
||||
"role_types": {
|
||||
"normal": "普通用户",
|
||||
"admin": "管理员",
|
||||
"super_admin": "超级管理员",
|
||||
"unknown": "未知身份"
|
||||
},
|
||||
"status_types": {
|
||||
"activated": "已激活",
|
||||
"banned": "已封禁",
|
||||
"unknown": "未知状态"
|
||||
},
|
||||
"sort": {
|
||||
"default": "默认排序",
|
||||
"by_quota": "按剩余额度排序",
|
||||
"by_used_quota": "按已用额度排序",
|
||||
"by_request_count": "按请求次数排序"
|
||||
},
|
||||
"sort_by": "排序方式"
|
||||
},
|
||||
"buttons": {
|
||||
"add": "添加新的用户",
|
||||
"delete": "删除",
|
||||
"delete_user": "删除用户",
|
||||
"enable": "启用",
|
||||
"disable": "禁用",
|
||||
"edit": "编辑",
|
||||
"promote": "提升",
|
||||
"demote": "降级"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"charts": {
|
||||
"requests": {
|
||||
"title": "模型请求趋势",
|
||||
"tooltip": "请求次数"
|
||||
},
|
||||
"quota": {
|
||||
"title": "额度消费趋势",
|
||||
"tooltip": "消费额度"
|
||||
},
|
||||
"tokens": {
|
||||
"title": "Token 消费趋势",
|
||||
"tooltip": "Token 数量"
|
||||
}
|
||||
},
|
||||
"statistics": {
|
||||
"title": "统计",
|
||||
"tooltip": {
|
||||
"date": "日期",
|
||||
"value": "数值"
|
||||
}
|
||||
}
|
||||
},
|
||||
"setting": {
|
||||
"title": "系统设置",
|
||||
"tabs": {
|
||||
"personal": "个人设置",
|
||||
"operation": "运营设置",
|
||||
"system": "系统设置",
|
||||
"other": "其他设置"
|
||||
},
|
||||
"personal": {
|
||||
"general": {
|
||||
"title": "通用设置",
|
||||
"system_token_notice": "注意,此处生成的令牌用于系统管理,而非用于请求 OpenAI 相关的服务,请知悉。",
|
||||
"buttons": {
|
||||
"update_profile": "更新个人信息",
|
||||
"generate_token": "生成系统访问令牌",
|
||||
"copy_invite": "复制邀请链接",
|
||||
"delete_account": "删除个人账户"
|
||||
}
|
||||
},
|
||||
"binding": {
|
||||
"title": "账号绑定",
|
||||
"buttons": {
|
||||
"bind_wechat": "绑定微信账号",
|
||||
"bind_github": "绑定 GitHub 账号",
|
||||
"bind_email": "绑定邮箱地址",
|
||||
"bind_lark": "绑定飞书账号"
|
||||
},
|
||||
"wechat": {
|
||||
"title": "微信绑定",
|
||||
"description": "微信扫码关注公众号,输入「验证码」获取验证码(三分钟内有效)",
|
||||
"verification_code": "验证码",
|
||||
"bind": "绑定"
|
||||
},
|
||||
"email": {
|
||||
"title": "绑定邮箱地址",
|
||||
"email_placeholder": "输入邮箱地址",
|
||||
"code_placeholder": "验证码",
|
||||
"get_code": "获取验证码",
|
||||
"get_code_retry": "重新发送({{countdown}})",
|
||||
"bind": "确认绑定",
|
||||
"cancel": "取消"
|
||||
}
|
||||
},
|
||||
"delete_account": {
|
||||
"title": "危险操作",
|
||||
"warning": "您正在删除自己的帐户,将清空所有数据且不可恢复",
|
||||
"confirm_placeholder": "输入你的账户名 {{username}} 以确认删除",
|
||||
"buttons": {
|
||||
"confirm": "确认删除",
|
||||
"cancel": "取消"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system": {
|
||||
"general": {
|
||||
"title": "通用设置",
|
||||
"server_address": "服务器地址",
|
||||
"server_address_placeholder": "例如:https://yourdomain.com",
|
||||
"buttons": {
|
||||
"update": "更新服务器地址"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"title": "配置登录注册",
|
||||
"password_login": "允许通过密码进行登录",
|
||||
"password_register": "允许通过密码进行注册",
|
||||
"email_verification": "通过密码注册时需要进行邮箱验证",
|
||||
"github_oauth": "允许通过 GitHub 账户登录 & 注册",
|
||||
"wechat_login": "允许通过微信登录 & 注册",
|
||||
"registration": "允许新用户注册(此项为否时,新用户将无法以任何方式进行注册)",
|
||||
"turnstile": "启用 Turnstile 用户校验"
|
||||
},
|
||||
"email_restriction": {
|
||||
"title": "配置邮箱域名白名单",
|
||||
"subtitle": "用以防止恶意用户利用临时邮箱批量注册",
|
||||
"enable": "启用邮箱域名白名单",
|
||||
"allowed_domains": "允许的邮箱域名",
|
||||
"add_domain": "添加新的允许的邮箱域名",
|
||||
"add_domain_placeholder": "输入新的允许的邮箱域名",
|
||||
"buttons": {
|
||||
"fill": "填入",
|
||||
"save": "保存邮箱域名白名单设置"
|
||||
}
|
||||
},
|
||||
"smtp": {
|
||||
"title": "配置 SMTP",
|
||||
"subtitle": "用以支持系统的邮件发送",
|
||||
"server": "SMTP 服务器地址",
|
||||
"server_placeholder": "例如:smtp.qq.com",
|
||||
"port": "SMTP 端口",
|
||||
"port_placeholder": "默认: 587",
|
||||
"account": "SMTP 账户",
|
||||
"account_placeholder": "通常是邮箱地址",
|
||||
"from": "SMTP 发送者邮箱",
|
||||
"from_placeholder": "通常和邮箱地址保持一致",
|
||||
"token": "SMTP 访问凭证",
|
||||
"token_placeholder": "敏感信息不会发送到前端显示",
|
||||
"buttons": {
|
||||
"save": "保存 SMTP 设置"
|
||||
}
|
||||
},
|
||||
"github": {
|
||||
"title": "配置 GitHub OAuth App",
|
||||
"subtitle": "用以支持通过 GitHub 进行登录注册",
|
||||
"manage_link": "点击此处",
|
||||
"manage_text": "管理你的 GitHub OAuth App",
|
||||
"url_notice": "Homepage URL 填 {{server_url}},Authorization callback URL 填 {{callback_url}}",
|
||||
"client_id": "GitHub Client ID",
|
||||
"client_id_placeholder": "输入你注册的 GitHub OAuth APP 的 ID",
|
||||
"client_secret": "GitHub Client Secret",
|
||||
"client_secret_placeholder": "敏感信息不会发送到前端显示",
|
||||
"buttons": {
|
||||
"save": "保存 GitHub OAuth 设置"
|
||||
}
|
||||
},
|
||||
"lark": {
|
||||
"title": "配置飞书授权登录",
|
||||
"subtitle": "用以支持通过飞书进行登录注册",
|
||||
"manage_link": "点击此处",
|
||||
"manage_text": "管理你的飞书应用",
|
||||
"url_notice": "主页链接填 {{server_url}},重定向 URL 填 {{callback_url}}",
|
||||
"client_id": "App ID",
|
||||
"client_id_placeholder": "输入 App ID",
|
||||
"client_secret": "App Secret",
|
||||
"client_secret_placeholder": "敏感信息不会发送到前端显示",
|
||||
"buttons": {
|
||||
"save": "保存飞书 OAuth 设置"
|
||||
}
|
||||
},
|
||||
"wechat": {
|
||||
"title": "配置 WeChat Server",
|
||||
"subtitle": "用以支持通过微信进行登录注册",
|
||||
"learn_more": "了解 WeChat Server",
|
||||
"server_address": "WeChat Server 服务器地址",
|
||||
"server_address_placeholder": "例如:https://yourdomain.com",
|
||||
"token": "WeChat Server 访问凭证",
|
||||
"token_placeholder": "敏感信息不会发送到前端显示",
|
||||
"qrcode": "微信公众号二维码图片链接",
|
||||
"qrcode_placeholder": "输入一个图片链接",
|
||||
"buttons": {
|
||||
"save": "保存 WeChat Server 设置"
|
||||
}
|
||||
},
|
||||
"turnstile": {
|
||||
"title": "配置 Turnstile",
|
||||
"subtitle": "用以支持用户校验",
|
||||
"manage_link": "点击此处",
|
||||
"manage_text": "管理你的 Turnstile Sites,推荐选择 Invisible Widget Type",
|
||||
"site_key": "Turnstile Site Key",
|
||||
"site_key_placeholder": "输入你注册的 Turnstile Site Key",
|
||||
"secret_key": "Turnstile Secret Key",
|
||||
"secret_key_placeholder": "敏感信息不会发送到前端显示",
|
||||
"buttons": {
|
||||
"save": "保存 Turnstile 设置"
|
||||
}
|
||||
},
|
||||
"password_login": {
|
||||
"warning": {
|
||||
"title": "警告",
|
||||
"content": "取消密码登录将导致所有未绑定其他登录方式的用户(包括管理员)无法通过密码登录,确认取消?",
|
||||
"buttons": {
|
||||
"confirm": "确定",
|
||||
"cancel": "取消"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"operation": {
|
||||
"quota": {
|
||||
"title": "额度设置",
|
||||
"new_user": "新用户初始额度",
|
||||
"new_user_placeholder": "例如:100",
|
||||
"pre_consume": "请求预扣费额度",
|
||||
"pre_consume_placeholder": "请求结束后多退少补",
|
||||
"inviter_reward": "邀请新用户奖励额度",
|
||||
"inviter_reward_placeholder": "例如:2000",
|
||||
"invitee_reward": "新用户使用邀请码奖励额度",
|
||||
"invitee_reward_placeholder": "例如:1000",
|
||||
"buttons": {
|
||||
"save": "保存额度设置"
|
||||
}
|
||||
},
|
||||
"ratio": {
|
||||
"title": "倍率设置",
|
||||
"model": {
|
||||
"title": "模型倍率",
|
||||
"placeholder": "为一个 JSON 文本,键为模型名称,值为倍率"
|
||||
},
|
||||
"completion": {
|
||||
"title": "补全倍率",
|
||||
"placeholder": "为一个 JSON 文本,键为模型名称,值为倍率,此处的倍率设置是模型补全倍率相较于提示倍率的比例,使用该设置可强制覆盖 One API 的内部比例"
|
||||
},
|
||||
"group": {
|
||||
"title": "分组倍率",
|
||||
"placeholder": "为一个 JSON 文本,键为分组名称,值为倍率"
|
||||
},
|
||||
"buttons": {
|
||||
"save": "保存倍率设置"
|
||||
}
|
||||
},
|
||||
"log": {
|
||||
"title": "日志设置",
|
||||
"enable_consume": "启用额度消费日志记录",
|
||||
"target_time": "目标时间",
|
||||
"buttons": {
|
||||
"clean": "清理历史日志"
|
||||
}
|
||||
},
|
||||
"monitor": {
|
||||
"title": "监控设置",
|
||||
"max_response_time": "最长响应时间",
|
||||
"max_response_time_placeholder": "单位秒,当运行渠道全部测试时,超过此时间将自动禁用渠道",
|
||||
"quota_reminder": "额度提醒阈值",
|
||||
"quota_reminder_placeholder": "低于此额度时将发送邮件提醒用户",
|
||||
"auto_disable": "失败时自动禁用渠道",
|
||||
"auto_enable": "成功时自动启用渠道",
|
||||
"buttons": {
|
||||
"save": "保存监控设置"
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"title": "通用设置",
|
||||
"topup_link": "充值链接",
|
||||
"topup_link_placeholder": "例如发卡网站的购买链接",
|
||||
"chat_link": "聊天页面链接",
|
||||
"chat_link_placeholder": "例如 ChatGPT Next Web 的部署地址",
|
||||
"quota_per_unit": "单位美元额度",
|
||||
"quota_per_unit_placeholder": "一单位货币能兑换的额度",
|
||||
"retry_times": "失败重试次数",
|
||||
"retry_times_placeholder": "失败重试次数",
|
||||
"display_in_currency": "以货币形式显示额度",
|
||||
"display_token_stat": "Billing 相关 API 显示令牌额度而非用户额度",
|
||||
"approximate_token": "使用近似的方式估算 token 数以减少计算量",
|
||||
"buttons": {
|
||||
"save": "保存通用设置"
|
||||
}
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"notice": {
|
||||
"title": "公告设置",
|
||||
"content": "公告内容",
|
||||
"content_placeholder": "在此输入新的公告内容,支持 Markdown & HTML 代码",
|
||||
"buttons": {
|
||||
"save": "保存公告"
|
||||
}
|
||||
},
|
||||
"system": {
|
||||
"title": "系统设置",
|
||||
"name": "系统名称",
|
||||
"name_placeholder": "请输入系统名称",
|
||||
"logo": "Logo 图片地址",
|
||||
"logo_placeholder": "在此输入 Logo 图片地址",
|
||||
"theme": {
|
||||
"title": "主题名称",
|
||||
"link": "当前可用主题",
|
||||
"placeholder": "请输入主题名称"
|
||||
},
|
||||
"buttons": {
|
||||
"save_name": "设置系统名称",
|
||||
"save_logo": "设置 Logo",
|
||||
"save_theme": "设置主题(重启生效)"
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"title": "内容设置",
|
||||
"homepage": {
|
||||
"title": "首页内容",
|
||||
"placeholder": "在此输入首页内容,支持 Markdown & HTML 代码,设置后首页的状态信息将不再显示。如果输入的是一个链接,则会使用该链接作为 iframe 的 src 属性,这允许你设置任意网页作为首页。"
|
||||
},
|
||||
"about": {
|
||||
"title": "关于",
|
||||
"placeholder": "在此输入新的关于内容,支持 Markdown & HTML 代码。如果输入的是一个链接,则会使用该链接作为 iframe 的 src 属性,这允许你设置任意网页作为关于页面。"
|
||||
},
|
||||
"footer": {
|
||||
"title": "页脚",
|
||||
"placeholder": "在此输入新的页脚,留空则使用默认页脚,支持 HTML 代码"
|
||||
},
|
||||
"buttons": {
|
||||
"save_homepage": "保存首页内容",
|
||||
"save_about": "保存关于",
|
||||
"save_footer": "设置页脚"
|
||||
}
|
||||
},
|
||||
"copyright": {
|
||||
"notice": "移除 One API 的版权标识必须首先获得授权,项目维护需要花费大量精力,如果本项目对你有意义,请主动支持本项目。"
|
||||
}
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"title": "关于",
|
||||
"description": "One API 是一个开源的接口管理和代理平台。",
|
||||
"repository": "项目地址:",
|
||||
"loading_failed": "加载失败"
|
||||
},
|
||||
"footer": {
|
||||
"built_by": "由",
|
||||
"built_by_name": "JustSong",
|
||||
"license": "构建,源代码遵循",
|
||||
"mit": "MIT 协议"
|
||||
},
|
||||
"home": {
|
||||
"welcome": {
|
||||
"title": "欢迎使用 One API",
|
||||
"description": "One API 是一个 LLM API 接口管理和分发系统,可以帮助您更好地管理和使用各大厂商的 LLM API。",
|
||||
"login_notice": "如需使用,请先登录或注册。"
|
||||
},
|
||||
"system_status": {
|
||||
"title": "系统状况",
|
||||
"info": {
|
||||
"title": "系统信息",
|
||||
"name": "名称:",
|
||||
"version": "版本:",
|
||||
"source": "源码:",
|
||||
"source_link": "GitHub 仓库",
|
||||
"start_time": "启动时间:"
|
||||
},
|
||||
"config": {
|
||||
"title": "系统配置",
|
||||
"email_verify": "邮箱验证:",
|
||||
"github_oauth": "GitHub 身份验证:",
|
||||
"wechat_login": "微信身份验证:",
|
||||
"turnstile": "Turnstile 校验:",
|
||||
"enabled": "已启用",
|
||||
"disabled": "未启用"
|
||||
}
|
||||
},
|
||||
"loading_failed": "加载首页内容失败..."
|
||||
},
|
||||
"auth": {
|
||||
"login": {
|
||||
"title": "用户登录",
|
||||
"username": "用户名 / 邮箱地址",
|
||||
"password": "密码",
|
||||
"button": "登录",
|
||||
"forgot_password": "忘记密码?",
|
||||
"reset_password": "点击重置",
|
||||
"no_account": "没有账户?",
|
||||
"register": "点击注册",
|
||||
"other_methods": "使用其他方式登录",
|
||||
"wechat": {
|
||||
"scan_tip": "微信扫码关注公众号,输入「验证码」获取验证码(三分钟内有效)",
|
||||
"code_placeholder": "验证码"
|
||||
}
|
||||
},
|
||||
"register": {
|
||||
"title": "新用户注册",
|
||||
"username": "输入用户名,最长 12 位",
|
||||
"password": "输入密码,最短 8 位,最长 20 位",
|
||||
"confirm_password": "再次输入密码",
|
||||
"email": "输入邮箱地址",
|
||||
"verification_code": "输入验证码",
|
||||
"get_code": "获取验证码",
|
||||
"get_code_retry": "重试 ({{countdown}})",
|
||||
"button": "注册",
|
||||
"has_account": "已有账户?",
|
||||
"login": "点击登录"
|
||||
},
|
||||
"reset": {
|
||||
"title": "密码重置",
|
||||
"email": "邮箱地址",
|
||||
"button": "提交",
|
||||
"notice": "系统将向您的邮箱发送一封包含重置链接的邮件,请注意查收。",
|
||||
"confirm": {
|
||||
"title": "密码重置确认",
|
||||
"new_password": "新密码",
|
||||
"button": "提交",
|
||||
"button_disabled": "密码重置完成",
|
||||
"notice": "新密码已生成,请点击密码框或上方按钮复制。请及时登录并修改密码!"
|
||||
}
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"success": {
|
||||
"login": "登录成功!",
|
||||
"register": "注册成功!",
|
||||
"verification_code": "验证码发送成功,请检查你的邮箱!",
|
||||
"password_reset": "重置邮件发送成功,请检查邮箱!"
|
||||
},
|
||||
"error": {
|
||||
"login_expired": "未登录或登录已过期,请重新登录!",
|
||||
"password_length": "密码长度不得小于 8 位!",
|
||||
"password_mismatch": "两次输入的密码不一致",
|
||||
"turnstile_wait": "请稍后几秒重试,Turnstile 正在检查用户环境!",
|
||||
"root_password": "请立刻修改默认密码!"
|
||||
},
|
||||
"notice": {
|
||||
"password_copied": "新密码已复制到剪贴板:{{password}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user