feat: 完成前端多语言支持和菜单优化
- 缩短菜单标题,解决显示不全问题 - 添加跟随系统语言选项,作为默认选项 - 移除语言切换时的页面刷新,实现无刷新切换 - 完成主要页面的多语言替换: * ConfigPage - 全局配置页面 * ResetPassword - 重置密码页面 * LeaderList - Leader 列表页面 * UserList - 用户列表页面 * Statistics - 统计信息页面 * OrderList - 订单列表页面 * TemplateList - 模板列表页面 * CopyTradingList - 跟单配置列表页面 - 添加简体中文、繁体中文和英文的完整翻译键 - 优化语言设置页面,支持跟随系统语言
This commit is contained in:
@@ -0,0 +1,432 @@
|
||||
{
|
||||
"common": {
|
||||
"back": "Back",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"add": "Add",
|
||||
"search": "Search",
|
||||
"refresh": "Refresh",
|
||||
"loading": "Loading...",
|
||||
"success": "Success",
|
||||
"failed": "Failed",
|
||||
"confirm": "Confirm",
|
||||
"submit": "Submit",
|
||||
"reset": "Reset",
|
||||
"close": "Close",
|
||||
"yes": "Yes",
|
||||
"no": "No"
|
||||
},
|
||||
"account": {
|
||||
"title": "Account Management",
|
||||
"list": "Account List",
|
||||
"detail": "Account Details",
|
||||
"import": "Import Account",
|
||||
"update": "Update Account",
|
||||
"delete": "Delete Account",
|
||||
"accountId": "Account ID",
|
||||
"accountName": "Account Name",
|
||||
"walletAddress": "Wallet Address",
|
||||
"balance": "Account Balance",
|
||||
"refreshBalance": "Refresh Balance",
|
||||
"apiCredentials": "API Credentials Configuration",
|
||||
"apiKey": "API Key",
|
||||
"apiSecret": "API Secret",
|
||||
"apiPassphrase": "API Passphrase",
|
||||
"configured": "Configured",
|
||||
"notConfigured": "Not Configured",
|
||||
"fullConfig": "Full Configuration",
|
||||
"partialConfig": "Partial Configuration",
|
||||
"statistics": "Trading Statistics",
|
||||
"totalOrders": "Total Orders",
|
||||
"activeOrders": "Active Orders",
|
||||
"completedOrders": "Completed Orders",
|
||||
"positionCount": "Position Count",
|
||||
"totalPnl": "Total P&L",
|
||||
"editTip": "Edit Tip",
|
||||
"editTipDesc": "Leave API credential fields empty to keep unchanged. Enter new values to update API credentials.",
|
||||
"accountNamePlaceholder": "Account Name (Optional)",
|
||||
"leaveEmptyToNotModify": "Leave empty to not modify",
|
||||
"updateSuccess": "Account updated successfully",
|
||||
"updateFailed": "Failed to update account",
|
||||
"getDetailFailed": "Failed to get account details",
|
||||
"accountIdRequired": "Account ID cannot be empty"
|
||||
},
|
||||
"message": {
|
||||
"loginSuccess": "Login successful",
|
||||
"loginFailed": "Login failed",
|
||||
"createUserSuccess": "User created successfully",
|
||||
"createUserFailed": "Failed to create user",
|
||||
"updatePasswordSuccess": "Password updated successfully",
|
||||
"updatePasswordFailed": "Failed to update password"
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"usernamePlaceholder": "Username",
|
||||
"passwordPlaceholder": "Password",
|
||||
"usernameRequired": "Please enter username",
|
||||
"passwordRequired": "Please enter password",
|
||||
"forgotPassword": "Forgot password? Reset password"
|
||||
},
|
||||
"order": {
|
||||
"create": "Order Created",
|
||||
"update": "Order Updated",
|
||||
"cancel": "Order Cancelled",
|
||||
"event": "Order Event",
|
||||
"buy": "Buy",
|
||||
"sell": "Sell",
|
||||
"market": "Market",
|
||||
"status": "Status",
|
||||
"filled": "Filled",
|
||||
"remaining": "Remaining"
|
||||
},
|
||||
"accountList": {
|
||||
"title": "Account Management",
|
||||
"importAccount": "Import Account",
|
||||
"accountName": "Account Name",
|
||||
"walletAddress": "Wallet Address",
|
||||
"proxyAddress": "Proxy Wallet Address",
|
||||
"apiCredentials": "API Credentials",
|
||||
"balance": "Balance",
|
||||
"activeOrders": "Active Orders",
|
||||
"action": "Actions",
|
||||
"detail": "Detail",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"viewDetail": "View Detail",
|
||||
"deleteConfirm": "Are you sure you want to delete this account?",
|
||||
"deleteConfirmDesc": "Before deleting the account, please make sure all active orders are cancelled. This action cannot be undone!",
|
||||
"deleteConfirmDescSimple": "This action cannot be undone!",
|
||||
"deleteConfirmOk": "Confirm Delete",
|
||||
"deleteSuccess": "Account deleted successfully",
|
||||
"deleteFailed": "Failed to delete account",
|
||||
"copySuccess": "Copied to clipboard",
|
||||
"copyFailed": "Copy failed",
|
||||
"fullConfig": "Full Config",
|
||||
"partialConfig": "Partial Config",
|
||||
"notConfigured": "Not Configured",
|
||||
"totalBalance": "Total Balance",
|
||||
"available": "Available",
|
||||
"position": "Position",
|
||||
"refreshBalance": "Refresh Balance",
|
||||
"refreshBalanceSuccess": "Balance refreshed successfully",
|
||||
"refreshBalanceFailed": "Failed to refresh balance",
|
||||
"getDetailFailed": "Failed to get account detail",
|
||||
"openDetailFailed": "Failed to open detail",
|
||||
"accountDetail": "Account Detail",
|
||||
"accountId": "Account ID",
|
||||
"apiKey": "API Key",
|
||||
"apiSecret": "API Secret",
|
||||
"apiPassphrase": "API Passphrase",
|
||||
"configured": "Configured",
|
||||
"notConfiguredStatus": "Not Configured",
|
||||
"configStatus": "Config Status",
|
||||
"statistics": "Trading Statistics",
|
||||
"totalOrders": "Total Orders",
|
||||
"activeOrdersCount": "Active Orders",
|
||||
"completedOrders": "Completed Orders",
|
||||
"positionCount": "Position Count",
|
||||
"totalPnl": "Total PnL",
|
||||
"editAccount": "Edit Account",
|
||||
"editTip": "Edit Tip",
|
||||
"editTipDesc": "Leave API credential fields empty to keep unchanged. Enter new values to update API credentials.",
|
||||
"accountNamePlaceholder": "Account Name (Optional)",
|
||||
"leaveEmptyToNotModify": "Leave empty to keep unchanged",
|
||||
"updateSuccess": "Account updated successfully",
|
||||
"updateFailed": "Failed to update account",
|
||||
"getDetailFailedForEdit": "Failed to get account detail",
|
||||
"loading": "Loading..."
|
||||
},
|
||||
"accountImport": {
|
||||
"title": "Import Account",
|
||||
"back": "Back",
|
||||
"securityTip": "Security Tip",
|
||||
"securityTipDesc": "Private keys will be stored in the backend database. Please ensure database access is secure. HTTPS is recommended.",
|
||||
"importMethod": "Import Method",
|
||||
"privateKey": "Private Key",
|
||||
"mnemonic": "Mnemonic",
|
||||
"privateKeyLabel": "Private Key",
|
||||
"privateKeyPlaceholder": "Enter private key (64-character hex string, 0x prefix optional)",
|
||||
"privateKeyRequired": "Please enter private key",
|
||||
"privateKeyInvalid": "Invalid private key format (should be 64-character hex string)",
|
||||
"walletAddress": "Wallet Address",
|
||||
"walletAddressPlaceholder": "Wallet address (will be derived from private key)",
|
||||
"walletAddressRequired": "Please enter wallet address",
|
||||
"walletAddressInvalid": "Invalid wallet address format",
|
||||
"walletAddressMismatch": "Wallet address does not match private key",
|
||||
"mnemonicLabel": "Mnemonic",
|
||||
"mnemonicPlaceholder": "Enter 12 or 24 words mnemonic (space-separated)",
|
||||
"mnemonicRequired": "Please enter mnemonic",
|
||||
"mnemonicInvalid": "Invalid mnemonic format (should be 12 or 24 words, space-separated)",
|
||||
"walletAddressMismatchMnemonic": "Wallet address does not match mnemonic",
|
||||
"accountName": "Account Name",
|
||||
"accountNamePlaceholder": "Optional, for identifying account",
|
||||
"importAccount": "Import Account",
|
||||
"importSuccess": "Account imported successfully",
|
||||
"importFailed": "Failed to import account",
|
||||
"derivedAddress": "Derived Address",
|
||||
"addressError": "Cannot derive address from private key",
|
||||
"addressErrorMnemonic": "Cannot derive address from mnemonic"
|
||||
},
|
||||
"leader": {
|
||||
"title": "Leader Management",
|
||||
"leaderName": "Leader Name",
|
||||
"walletAddress": "Wallet Address",
|
||||
"category": "Category",
|
||||
"all": "All",
|
||||
"copyTradingCount": "Copy Trading Count",
|
||||
"createdAt": "Created At",
|
||||
"action": "Actions",
|
||||
"add": "Add",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"listFailed": "Failed to get Leader list",
|
||||
"deleteSuccess": "Leader deleted successfully",
|
||||
"deleteFailed": "Failed to delete Leader",
|
||||
"deleteConfirm": "Are you sure you want to delete this Leader?",
|
||||
"deleteConfirmDesc": "This action cannot be undone!",
|
||||
"deleteConfirmOk": "Confirm Delete"
|
||||
},
|
||||
"menu": {
|
||||
"accounts": "Account Management",
|
||||
"copyTrading": "Copy Trading",
|
||||
"leaders": "Leader Management",
|
||||
"templates": "Templates",
|
||||
"copyTradingConfig": "Copy Trading Config",
|
||||
"positions": "Position Management",
|
||||
"statistics": "Statistics",
|
||||
"users": "User Management",
|
||||
"systemSettings": "System",
|
||||
"language": "Language",
|
||||
"apiHealth": "API Health",
|
||||
"proxy": "Proxy",
|
||||
"logout": "Logout",
|
||||
"logoutConfirm": "Confirm Logout",
|
||||
"logoutConfirmDesc": "Are you sure you want to logout?",
|
||||
"navigation": "Navigation Menu"
|
||||
},
|
||||
"languageSettings": {
|
||||
"title": "Language Settings",
|
||||
"currentLanguage": "Current Language",
|
||||
"followSystem": "Follow System",
|
||||
"currentSystemLanguage": "Current System Language",
|
||||
"description": "After changing the language, the interface will update immediately.",
|
||||
"changeSuccess": "Language changed successfully",
|
||||
"changeFailed": "Failed to change language"
|
||||
},
|
||||
"apiHealthStatus": {
|
||||
"title": "API Health Status",
|
||||
"normal": "Normal",
|
||||
"notConfigured": "Not Configured",
|
||||
"abnormal": "Abnormal",
|
||||
"responseTime": "Response Time"
|
||||
},
|
||||
"proxySettings": {
|
||||
"title": "Proxy Settings",
|
||||
"enabled": "Enable Proxy",
|
||||
"host": "Proxy Host",
|
||||
"port": "Proxy Port",
|
||||
"username": "Proxy Username (Optional)",
|
||||
"password": "Proxy Password (Optional)",
|
||||
"hostRequired": "Please enter proxy host address",
|
||||
"hostInvalid": "Please enter a valid host address",
|
||||
"hostPlaceholder": "e.g., 127.0.0.1 or proxy.example.com",
|
||||
"portRequired": "Please enter proxy port",
|
||||
"portInvalid": "Port must be between 1-65535",
|
||||
"portPlaceholder": "e.g., 8888",
|
||||
"usernamePlaceholder": "Enter username if proxy requires authentication",
|
||||
"passwordPlaceholder": "Enter password if proxy requires authentication",
|
||||
"passwordPlaceholderUpdate": "Leave empty to keep password unchanged",
|
||||
"passwordHelp": "Enter password if proxy requires authentication",
|
||||
"passwordHelpUpdate": "Leave empty to keep password unchanged, enter new password to update",
|
||||
"check": "Check Proxy",
|
||||
"checkSuccess": "Proxy check successful",
|
||||
"checkFailed": "Proxy check failed",
|
||||
"saveSuccess": "Configuration saved successfully",
|
||||
"saveFailed": "Failed to save configuration",
|
||||
"getFailed": "Failed to get proxy configuration",
|
||||
"latency": "Latency"
|
||||
},
|
||||
"configPage": {
|
||||
"title": "Global Configuration",
|
||||
"message": "Configuration Function Migrated",
|
||||
"description": "Global configuration function has been migrated to the following pages:",
|
||||
"templates": "Templates",
|
||||
"templatesDesc": "Manage copy trading parameters (ratio, amount, risk control, etc.)",
|
||||
"copyTrading": "Copy Trading Config",
|
||||
"copyTradingDesc": "Associate accounts, templates and Leaders to enable copy trading relationships",
|
||||
"systemSettings": "System Settings",
|
||||
"systemSettingsDesc": "Configure proxy, view API health status",
|
||||
"footer": "Please use the above pages for configuration management."
|
||||
},
|
||||
"resetPassword": {
|
||||
"title": "Reset Password",
|
||||
"firstUse": "First Time Using System",
|
||||
"firstUseDesc": "Please use the reset key provided by the administrator to set the initial password",
|
||||
"resetKey": "Reset Key",
|
||||
"resetKeyRequired": "Please enter reset key",
|
||||
"resetKeyPlaceholder": "Please enter reset key",
|
||||
"username": "Username",
|
||||
"usernameRequired": "Please enter username",
|
||||
"usernamePlaceholder": "Please enter username",
|
||||
"newPassword": "New Password",
|
||||
"newPasswordRequired": "Please enter new password",
|
||||
"passwordPlaceholder": "At least 6 characters",
|
||||
"passwordMinLength": "Password must be at least 6 characters",
|
||||
"passwordStrength": "Password Strength",
|
||||
"weak": "Weak",
|
||||
"fair": "Fair",
|
||||
"medium": "Medium",
|
||||
"strong": "Strong",
|
||||
"veryStrong": "Very Strong",
|
||||
"confirmPassword": "Confirm Password",
|
||||
"confirmPasswordRequired": "Please confirm password",
|
||||
"confirmPasswordPlaceholder": "Please enter password again",
|
||||
"passwordMismatch": "Passwords do not match",
|
||||
"submit": "Reset Password",
|
||||
"success": "Password reset successfully",
|
||||
"failed": "Password reset failed"
|
||||
},
|
||||
"leaderList": {
|
||||
"title": "Leader Management",
|
||||
"addLeader": "Add Leader",
|
||||
"leaderName": "Leader Name",
|
||||
"walletAddress": "Wallet Address",
|
||||
"category": "Category",
|
||||
"all": "All",
|
||||
"copyTradingCount": "Copy Trading Count",
|
||||
"copyTradingRelations": "{{count}} copy trading relations",
|
||||
"createdAt": "Created At",
|
||||
"noData": "No Leader data",
|
||||
"fetchFailed": "Failed to get Leader list",
|
||||
"deleteSuccess": "Leader deleted successfully",
|
||||
"deleteFailed": "Failed to delete Leader",
|
||||
"deleteConfirm": "Are you sure you want to delete this Leader?",
|
||||
"deleteConfirmDesc": "This Leader has {{count}} copy trading relations, please delete them first"
|
||||
},
|
||||
"userList": {
|
||||
"title": "User Management",
|
||||
"username": "Username",
|
||||
"role": "Role",
|
||||
"defaultAccount": "Default Account",
|
||||
"normalUser": "Normal User",
|
||||
"updateMyPassword": "Update My Password",
|
||||
"addUser": "Add User",
|
||||
"createUser": "Create User",
|
||||
"updatePassword": "Update Password",
|
||||
"updateMyPasswordTitle": "Update My Password",
|
||||
"newPassword": "New Password",
|
||||
"password": "Password",
|
||||
"passwordRequired": "Please enter password",
|
||||
"passwordMinLength": "Password must be at least 6 characters",
|
||||
"passwordPlaceholder": "At least 6 characters",
|
||||
"usernameRequired": "Please enter username",
|
||||
"usernamePlaceholder": "Please enter username",
|
||||
"newPasswordRequired": "Please enter new password",
|
||||
"fetchFailed": "Failed to get user list",
|
||||
"createSuccess": "User created successfully",
|
||||
"createFailed": "Failed to create user",
|
||||
"updatePasswordSuccess": "Password updated successfully",
|
||||
"updatePasswordFailed": "Failed to update password",
|
||||
"updateOwnPasswordSuccess": "Password updated successfully, please login again",
|
||||
"updateOwnPasswordFailed": "Failed to update password",
|
||||
"deleteSuccess": "User deleted successfully",
|
||||
"deleteFailed": "Failed to delete user",
|
||||
"deleteConfirm": "Are you sure you want to delete this user?",
|
||||
"total": "Total {{total}} items"
|
||||
},
|
||||
"statistics": {
|
||||
"title": "Statistics",
|
||||
"totalOrders": "Total Orders",
|
||||
"totalPnl": "Total P&L",
|
||||
"winRate": "Win Rate",
|
||||
"avgPnl": "Average P&L",
|
||||
"maxProfit": "Max Profit",
|
||||
"maxLoss": "Max Loss",
|
||||
"startDate": "Start Date",
|
||||
"endDate": "End Date",
|
||||
"fetchFailed": "Failed to get statistics",
|
||||
"refresh": "Refresh",
|
||||
"reset": "Reset"
|
||||
},
|
||||
"orderList": {
|
||||
"title": "Order Management",
|
||||
"leader": "Leader",
|
||||
"market": "Market",
|
||||
"category": "Category",
|
||||
"side": "Side",
|
||||
"price": "Price",
|
||||
"size": "Size",
|
||||
"status": "Status",
|
||||
"pnl": "P&L",
|
||||
"createdAt": "Created At",
|
||||
"fetchFailed": "Failed to get order list"
|
||||
},
|
||||
"templateList": {
|
||||
"title": "Template Management",
|
||||
"addTemplate": "Add Template",
|
||||
"searchPlaceholder": "Search template name",
|
||||
"templateName": "Template Name",
|
||||
"copyMode": "Copy Mode",
|
||||
"ratio": "Ratio",
|
||||
"fixedAmount": "Fixed Amount",
|
||||
"ratioMode": "Ratio Mode",
|
||||
"fixedAmountMode": "Fixed Amount Mode",
|
||||
"copyConfig": "Copy Config",
|
||||
"supportSell": "Support Sell",
|
||||
"notSupportSell": "Not Support Sell",
|
||||
"useCount": "Use Count",
|
||||
"timesUsed": " times used",
|
||||
"amountLimit": "Amount Limit",
|
||||
"max": "Max",
|
||||
"min": "Min",
|
||||
"notSet": "Not Set",
|
||||
"otherConfig": "Other Config",
|
||||
"maxDailyOrders": "Max Daily Orders",
|
||||
"priceTolerance": "Price Tolerance",
|
||||
"copy": "Copy",
|
||||
"copySuffix": "Copy",
|
||||
"noData": "No template data",
|
||||
"fetchFailed": "Failed to get template list",
|
||||
"deleteSuccess": "Template deleted successfully",
|
||||
"deleteFailed": "Failed to delete template",
|
||||
"deleteConfirm": "Are you sure you want to delete this template?",
|
||||
"deleteConfirmDesc": "This action cannot be undone. Please ensure no copy trading relationships are using this template",
|
||||
"copySuccess": "Template copied successfully",
|
||||
"copyFailed": "Failed to copy template",
|
||||
"minAmountError": "Minimum amount must be >= 1",
|
||||
"fixedAmountRequired": "Please enter fixed copy trading amount",
|
||||
"invalidNumber": "Please enter a valid number",
|
||||
"fixedAmountError": "Fixed amount must be >= 1, please re-enter"
|
||||
},
|
||||
"copyTradingList": {
|
||||
"title": "Copy Trading Config Management",
|
||||
"addCopyTrading": "Add Copy Trading",
|
||||
"wallet": "Wallet",
|
||||
"account": "Account",
|
||||
"template": "Template",
|
||||
"leader": "Leader",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"totalPnl": "Total P&L",
|
||||
"statistics": "Statistics",
|
||||
"orders": "Orders",
|
||||
"viewStatistics": "View Statistics",
|
||||
"buyOrders": "Buy Orders",
|
||||
"sellOrders": "Sell Orders",
|
||||
"matchedOrders": "Matched Orders",
|
||||
"filterWallet": "Filter Wallet",
|
||||
"filterTemplate": "Filter Template",
|
||||
"filterLeader": "Filter Leader",
|
||||
"fetchFailed": "Failed to get copy trading list",
|
||||
"startSuccess": "Copy trading started successfully",
|
||||
"stopSuccess": "Copy trading stopped successfully",
|
||||
"updateStatusFailed": "Failed to update copy trading status",
|
||||
"deleteSuccess": "Copy trading deleted successfully",
|
||||
"deleteFailed": "Failed to delete copy trading",
|
||||
"deleteConfirm": "Are you sure you want to delete this copy trading relationship?"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user