Files
PolyHermes/frontend/src/locales/en/common.json
T
WrBugandCursor 9fef4bea59 feat: 健康检查加币安 API/WS,订单簿 bids 空防护,自动价差历史取 20 根
- ApiHealthCheckService: 新增币安 API(ping)、币安 WebSocket(5m/15m 连接状态)
- BinanceKlineService: 连接状态追踪 getConnectionStatuses 供健康检查
- CryptoTailOrderbookWsService: book 事件 bids 为空时不再取 [0],避免 Index 0 out of bounds
- BinanceKlineAutoSpreadService + 文档 + i18n: 历史 K 线由 30 根改为 20 根

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-14 15:27:22 +08:00

1480 lines
70 KiB
JSON

{
"common": {
"back": "Back",
"save": "Save",
"cancel": "Cancel",
"edit": "Edit",
"viewDetail": "View Details",
"delete": "Delete",
"add": "Add",
"search": "Search",
"refresh": "Refresh",
"loading": "Loading...",
"success": "Success",
"failed": "Failed",
"confirm": "Confirm",
"submit": "Submit",
"reset": "Reset",
"close": "Close",
"create": "Create",
"copy": "Copy",
"copySuccess": "Copied successfully",
"copyFailed": "Copy failed",
"yes": "Yes",
"no": "No",
"actions": "Actions",
"all": "All",
"createdAt": "Created At",
"updatedAt": "Updated At",
"status": "Status",
"enabled": "Enabled",
"disabled": "Disabled",
"noData": "No Data",
"saveConfig": "Save Config",
"refreshConfig": "Refresh Config",
"total": "Total",
"items": "items",
"prev": "Previous",
"previous": "Previous",
"next": "Next",
"page": "Page",
"pageOf": "Page",
"ascending": "Ascending",
"descending": "Descending",
"day": "day"
},
"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",
"walletType": "Wallet Type",
"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",
"proxyAddress": "Proxy Wallet Address"
},
"message": {
"success": "Operation successful",
"error": "Operation failed",
"loading": "Loading...",
"noData": "No Data",
"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",
"usernameRequired": "Please enter username",
"passwordRequired": "Please enter password",
"usernamePlaceholder": "Please enter username",
"passwordPlaceholder": "Please enter password",
"forgotPassword": "Forgot password?",
"loginFailed": "Login failed",
"loginSuccess": "Login successful"
},
"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",
"addAccount": "Add Account",
"actions": "Actions",
"importAccount": "Import Account",
"accountName": "Account Name",
"walletAddress": "Wallet Address",
"walletType": "Wallet Type",
"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...",
"fetchFailed": "Failed to get account list"
},
"accountImport": {
"title": "Import Account",
"back": "Back",
"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",
"accountNameRequired": "Please enter account name",
"accountNamePlaceholder": "Optional, for identifying account",
"accountNameHelp": "Used to identify account for management",
"privateKeyHelp": "Private key will be encrypted and stored, only used for signing transactions",
"submit": "Import",
"invalidPrivateKey": "Invalid private key",
"duplicateAccount": "Account already exists",
"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",
"walletType": "Wallet Type",
"walletTypeHelp": "Web3 Wallet: Polymarket accounts connected via browser wallets like MetaMask\nMagic: Polymarket accounts logged in via email or social accounts (Google, Twitter, etc.)",
"loadingProxyOptions": "Loading proxy addresses and asset information...",
"selectProxyOption": "Please select account type",
"proxyOptionRequired": "Please select a proxy address",
"proxyOption": {
"magic": {
"description": "Email/Social Login Account (Magic)",
"title": "Magic Proxy Address"
},
"safe": {
"description": "MetaMask Browser Wallet Account (Safe)",
"title": "Safe Proxy Address"
},
"proxyAddress": "Proxy Address",
"proxyAddressHelp": "The proxy address is the wallet address you actually use on Polymarket: Magic for email/social login accounts, Safe for browser wallet (e.g. MetaMask) accounts. Please select the one that matches how you log in to Polymarket.",
"availableBalance": "Available Balance",
"positionBalance": "Position Balance",
"totalBalance": "Total Balance",
"positionCount": "Position Count",
"noAssets": "No Assets",
"hasAssets": "Has Assets",
"error": "Failed to fetch",
"select": "Select this proxy address"
}
},
"leader": {
"title": "Leader Management",
"leaderName": "Leader Name",
"leaderAddress": "Wallet Address",
"walletAddress": "Wallet Address",
"category": "Category",
"all": "All",
"copyTradingCount": "Copy Trading Count",
"createdAt": "Created At",
"action": "Actions",
"add": "Add",
"addLeader": "Add Leader",
"edit": "Edit",
"editLeader": "Edit Leader",
"delete": "Delete",
"deleteLeader": "Delete Leader",
"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",
"cryptoTailStrategy": "Tail Strategy",
"positions": "Position Management",
"backtest": "Backtest",
"statistics": "Statistics",
"announcements": "Announcements",
"users": "User Management",
"systemSettings": "System",
"systemOverview": "Overview",
"language": "Language",
"rpcNodes": "RPC Nodes",
"apiHealth": "API Health",
"builderApiKey": "Builder API Key",
"proxy": "Proxy",
"notifications": "Notifications",
"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",
"checkFailed": "Check Failed",
"status": "Status",
"responseTime": "Response Time",
"lastCheck": "Last Check",
"healthy": "Healthy",
"unhealthy": "Unhealthy",
"unknown": "Unknown",
"normal": "Normal",
"notConfigured": "Not Configured",
"abnormal": "Abnormal"
},
"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."
},
"systemSettings": {
"title": "General Settings",
"language": {
"title": "Language Settings",
"currentLanguage": "Current Language",
"languageRequired": "Please select a language"
},
"notification": {
"title": "Notification Settings"
},
"relayer": {
"title": "Relayer Configuration"
},
"proxy": {
"title": "Proxy Settings"
},
"autoRedeem": {
"title": "Auto Redeem Configuration",
"label": "Enable Auto Redeem",
"tooltip": "When enabled, the system will automatically redeem all redeemable positions in all accounts. Requires Builder API Key configuration to take effect.",
"builderApiKeyNotConfigured": "Builder API Key Not Configured",
"builderApiKeyNotConfiguredDesc": "Auto redeem feature requires Builder API Key configuration to take effect.",
"goToConfigure": "Go to Configure",
"saveSuccess": "Auto redeem configuration saved",
"saveFailed": "Failed to save auto redeem configuration"
}
},
"builderApiKey": {
"title": "Builder API Key Configuration",
"alertTitle": "What is Builder API Key?",
"description": "Builder API Key is a system-level configuration, not related to your account. It is an API credential for Polymarket's Builder service, used to execute Gasless (no gas fee) transactions.",
"purposeTitle": "Main purposes:",
"purpose1": "Execute Gasless transactions: Operations like redeeming positions and creating orders don't require gas fees",
"purpose2": "Improve user experience: No need to prepare MATIC tokens in wallet for gas fees",
"purpose3": "Reduce transaction costs: Gas fees are covered by Builder service",
"getApiKey": "Get API Key:",
"openSettings": "Go to Polymarket Settings",
"apiKey": "Builder API Key",
"secret": "Builder Secret",
"passphrase": "Builder Passphrase",
"apiKeyPlaceholder": "Please enter Builder API Key",
"secretPlaceholder": "Please enter Builder Secret",
"passphrasePlaceholder": "Please enter Builder Passphrase",
"apiKeyHelp": "Configured, enter new value to update",
"secretHelp": "Configured, enter new value to update",
"passphraseHelp": "Configured, enter new value to update",
"saveSuccess": "Builder API Key configuration saved successfully",
"saveFailed": "Failed to save Builder API Key configuration",
"getFailed": "Failed to get Builder API Key configuration",
"noChanges": "No fields to update",
"notConfigured": "Builder API Key not configured, please go to System Settings to configure",
"notConfiguredError": "Builder API Key not configured, cannot execute Gasless transactions. Please go to System Settings to configure Builder API Key.",
"apiReference": "API Reference Documentation",
"apiReferenceDesc": "Learn more about Builder API usage:",
"relayerApiDocs": "Builder Relayer API Documentation",
"builderDocs": "Builder Development Documentation",
"apiTest": "API Test",
"apiTestDesc": "Test if Builder API is working correctly",
"testNonce": "Test Get Nonce",
"testNonceHelp": "Enter Safe address (proxyAddress)",
"testDeployed": "Test Check Deployed Status",
"testDeployedHelp": "Enter Safe address (proxyAddress)",
"testTransaction": "Test Get Transaction Status",
"testTransactionHelp": "Enter transaction ID",
"testAddressRequired": "Please enter address",
"testTransactionIdRequired": "Please enter transaction ID",
"testAddressPlaceholder": "Enter address, e.g., 0x...",
"testTransactionIdPlaceholder": "Enter transaction ID",
"testSuccess": "Test successful",
"testFailed": "Test failed"
},
"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",
"remark": "Remark",
"website": "Website",
"openWebsite": "Open Website",
"all": "All",
"copyTradingCount": "Copy Trading Count",
"backtestCount": "Backtest Count",
"copyTradingRelations": "{{count}} copy trading relations",
"viewCopyTradings": "View Copy Tradings",
"viewBacktests": "View Backtests",
"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",
"openDetailFailed": "Failed to open detail",
"noCopyTradings": "No copy trading configs",
"noBacktests": "No backtests"
},
"leaderAdd": {
"title": "Add Leader",
"back": "Back",
"leaderAddress": "Leader Wallet Address",
"leaderAddressRequired": "Please enter Leader wallet address",
"leaderAddressInvalid": "Invalid wallet address format (must be a 42-character address starting with 0x)",
"leaderAddressTooltip": "The wallet address of the leader to be copied. The system will monitor transactions from this address and automatically copy trade",
"leaderName": "Leader Name",
"leaderNameTooltip": "Optional, used to identify the Leader for easier management",
"leaderNamePlaceholder": "Optional, used to identify the Leader",
"remark": "Leader Remark",
"remarkTooltip": "Optional, used to record remarks about the Leader",
"remarkPlaceholder": "Optional, used to record remarks about the Leader",
"website": "Leader Website",
"websiteTooltip": "Optional, Leader's website link",
"websitePlaceholder": "Optional, e.g.: https://example.com",
"websiteInvalid": "Please enter a valid URL address",
"category": "Category Filter",
"categoryTooltip": "Only copy trades of this category. Leave empty to copy all categories (sports or crypto)",
"categoryPlaceholder": "Select category (optional)",
"add": "Add Leader",
"cancel": "Cancel",
"addSuccess": "Leader added successfully",
"addFailed": "Failed to add Leader"
},
"leaderEdit": {
"title": "Edit Leader",
"leaderName": "Leader Name",
"leaderNameTooltip": "Optional, used to identify the Leader for easier management",
"leaderNamePlaceholder": "Optional, used to identify the Leader",
"remark": "Leader Remark",
"remarkTooltip": "Optional, used to record remarks about the Leader",
"remarkPlaceholder": "Optional, used to record remarks about the Leader",
"website": "Leader Website",
"websiteTooltip": "Optional, Leader's website link",
"websitePlaceholder": "Optional, e.g.: https://example.com",
"websiteInvalid": "Please enter a valid URL address",
"category": "Category Filter",
"categoryTooltip": "Only copy trades of this category. Leave empty to copy all categories (sports or crypto)",
"categoryPlaceholder": "Select category (optional)",
"save": "Save",
"cancel": "Cancel",
"saveSuccess": "Leader updated successfully",
"saveFailed": "Failed to update Leader",
"fetchFailed": "Failed to get Leader details",
"invalidId": "Invalid Leader ID"
},
"leaderDetail": {
"title": "Leader Details",
"loading": "Loading...",
"invalidId": "Invalid Leader ID",
"fetchFailed": "Failed to get Leader details",
"fetchBalanceFailed": "Failed to get balance",
"noBalanceData": "No balance data",
"basicInfo": "Basic Information",
"leaderName": "Leader Name",
"leaderAddress": "Wallet Address",
"category": "Category",
"copyTradingCount": "Copy Trading Count",
"remark": "Remark",
"createdAt": "Created At",
"updatedAt": "Updated At",
"website": "Website",
"openWebsite": "Open Website",
"balanceInfo": "Balance Information",
"refresh": "Refresh",
"availableBalance": "Available Balance",
"positionBalance": "Position Asset",
"totalBalance": "Total Balance",
"positions": "Positions",
"noPositions": "No positions",
"market": "Market",
"marketId": "Market ID",
"side": "Side",
"quantity": "Quantity",
"avgPrice": "Avg Price",
"currentValue": "Current Value",
"pnl": "PnL"
},
"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",
"pushFilteredOrders": "Push Filtered Orders",
"pushFilteredOrdersTooltip": "When enabled, filtered orders will be pushed to Telegram",
"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"
},
"templateAdd": {
"title": "Create Copy Trading Template",
"back": "Back",
"templateName": "Template Name",
"templateNamePlaceholder": "Please enter template name",
"templateNameRequired": "Please enter template name",
"templateNameTooltip": "Unique identifier name for the template, used to distinguish different copy trading configuration templates. Template name must be unique and cannot duplicate other templates.",
"copyMode": "Copy Amount Mode",
"copyModeTooltip": "Select the calculation method for copy amount. Ratio mode: copy amount changes proportionally with Leader order size; Fixed amount mode: copy amount remains fixed regardless of Leader order size.",
"ratioMode": "Ratio Mode",
"fixedAmountMode": "Fixed Amount Mode",
"copyRatio": "Copy Ratio",
"copyRatioTooltip": "Copy ratio represents the percentage of copy amount relative to Leader order amount. For example: 100% means 1:1 copy, 50% means half position copy, 200% means double copy",
"copyRatioPlaceholder": "For example: 100 means 100% (1:1 copy), default 100%",
"fixedAmount": "Fixed Copy Amount (USDC)",
"fixedAmountPlaceholder": "Fixed amount, does not change with Leader order size, must be >= 1",
"fixedAmountRequired": "Please enter fixed copy amount",
"fixedAmountError": "Fixed amount must be >= 1, please re-enter",
"maxOrderSize": "Max Order Size (USDC)",
"maxOrderSizeTooltip": "In ratio mode, limits the maximum amount cap for single copy order, used to prevent excessive copy amount and control risk. For example: set to 1000, even if calculated copy amount exceeds 1000, it will be limited to 1000 USDC.",
"maxOrderSizePlaceholder": "Only effective in ratio mode (optional)",
"minOrderSize": "Min Order Size (USDC)",
"minOrderSizeTooltip": "In ratio mode, limits the minimum amount floor for single copy order, used to filter out orders with too small amounts, avoiding frequent small trades. If filled, must be >= 1 USDC. For example: set to 10, if calculated copy amount is less than 10, skip this order.",
"minOrderSizePlaceholder": "Only effective in ratio mode, must be >= 1 (optional)",
"minOrderSizeError": "Minimum amount must be >= 1",
"maxDailyOrders": "Max Daily Copy Orders",
"maxDailyOrdersTooltip": "Limits the maximum number of copy orders per day, used for risk control and preventing overtrading. For example: set to 50, when daily copy orders reach 50, stop copying, reset next day.",
"maxDailyOrdersPlaceholder": "Default 100 (optional)",
"priceTolerance": "Price Tolerance (%)",
"priceToleranceTooltip": "Allowed adjustment range for copy price based on Leader price, used to adjust price within Leader price ± tolerance range to improve fill rate. For example: set to 5%, Leader price is 0.5, then copy price can be in 0.475-0.525 range.",
"priceTolerancePlaceholder": "Default 5% (optional)",
"minOrderDepth": "Min Order Depth (USDC)",
"minOrderDepthTooltip": "Check total order amount (bids + asks) in orderbook to ensure sufficient liquidity. Leave empty to disable",
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
"maxSpread": "Max Spread (Absolute Price)",
"maxSpreadTooltip": "Maximum spread (absolute price). Avoid copying in markets with excessive spreads. Leave empty to disable",
"maxSpreadPlaceholder": "For example: 0.05 (5 cents, optional, leave empty to disable)",
"minOrderbookDepth": "Min Orderbook Depth (USDC)",
"minOrderbookDepthTooltip": "Minimum orderbook depth (USDC amount), NULL means this filter is not enabled. Check depth of first N levels",
"minOrderbookDepthPlaceholder": "For example: 50 (optional, leave empty to disable)",
"priceRangeFilter": "Price Range Filter",
"priceRange": "Price Range",
"priceRangeTooltip": "Only copy orders where Leader's trade price is within the specified range. Leave empty to disable. Examples: Fill 0.11 and 0.89 means only copy orders with price between 0.11 and 0.89; Fill only max price 0.89 means only copy orders with price below 0.89; Fill only min price 0.11 means only copy orders with price above 0.11.",
"minPricePlaceholder": "Min Price (leave empty for no limit)",
"maxPricePlaceholder": "Max Price (leave empty for no limit)",
"supportSell": "Support Sell",
"supportSellTooltip": "Whether to copy Leader's sell orders. Enabled: copy both Leader's buy and sell orders; Disabled: only copy Leader's buy orders, ignore sell orders.",
"pushFilteredOrders": "Push Filtered Orders",
"pushFilteredOrdersTooltip": "When enabled, filtered orders will be pushed to Telegram",
"create": "Create Template",
"createSuccess": "Template created successfully",
"createFailed": "Failed to create template",
"invalidNumber": "Please enter a valid number"
},
"templateEdit": {
"title": "Edit Copy Trading Template",
"back": "Back",
"save": "Save Changes",
"saveSuccess": "Template updated successfully",
"saveFailed": "Failed to update template",
"fetchFailed": "Failed to get template details",
"templateName": "Template Name",
"templateNamePlaceholder": "Please enter template name",
"templateNameRequired": "Please enter template name",
"templateNameTooltip": "Unique identifier name for the template, used to distinguish different copy trading configuration templates. Template name must be unique and cannot duplicate other templates.",
"copyMode": "Copy Amount Mode",
"copyModeTooltip": "Select the calculation method for copy amount. Ratio mode: copy amount changes proportionally with Leader order size; Fixed amount mode: copy amount remains fixed regardless of Leader order size.",
"ratioMode": "Ratio Mode",
"fixedAmountMode": "Fixed Amount Mode",
"copyRatio": "Copy Ratio",
"copyRatioTooltip": "Copy ratio represents the percentage of copy amount relative to Leader order amount. For example: 100% means 1:1 copy, 50% means half position copy, 200% means double copy",
"copyRatioPlaceholder": "For example: 100 means 100% (1:1 copy), default 100%",
"fixedAmount": "Fixed Copy Amount (USDC)",
"fixedAmountPlaceholder": "Fixed amount, does not change with Leader order size, must be >= 1",
"fixedAmountRequired": "Please enter fixed copy amount",
"fixedAmountError": "Fixed amount must be >= 1, please re-enter",
"fixedAmountTooltip": "In fixed amount mode, the fixed amount for each copy, does not change with Leader order size. Must be >= 1 USDC. For example: set to 10, then regardless of how much Leader buys, copy amount is always 10 USDC.",
"maxOrderSize": "Max Order Size (USDC)",
"maxOrderSizeTooltip": "In ratio mode, limits the maximum amount cap for single copy order, used to prevent excessive copy amount and control risk. For example: set to 1000, even if calculated copy amount exceeds 1000, it will be limited to 1000 USDC.",
"maxOrderSizePlaceholder": "Only effective in ratio mode (optional)",
"minOrderSize": "Min Order Size (USDC)",
"minOrderSizeTooltip": "In ratio mode, limits the minimum amount floor for single copy order, used to filter out orders with too small amounts, avoiding frequent small trades. If filled, must be >= 1 USDC. For example: set to 10, if calculated copy amount is less than 10, skip this order.",
"minOrderSizePlaceholder": "Only effective in ratio mode, must be >= 1 (optional)",
"minOrderSizeError": "Minimum amount must be >= 1",
"maxDailyOrders": "Max Daily Copy Orders",
"maxDailyOrdersTooltip": "Limits the maximum number of copy orders per day, used for risk control and preventing overtrading. For example: set to 50, when daily copy orders reach 50, stop copying, reset next day.",
"maxDailyOrdersPlaceholder": "Default 100 (optional)",
"priceTolerance": "Price Tolerance (%)",
"priceToleranceTooltip": "Allowed adjustment range for copy price based on Leader price, used to adjust price within Leader price ± tolerance range to improve fill rate. For example: set to 5%, Leader price is 0.5, then copy price can be in 0.475-0.525 range.",
"priceTolerancePlaceholder": "Default 5% (optional)",
"minOrderDepth": "Min Order Depth (USDC)",
"minOrderDepthTooltip": "Check total order amount (bids + asks) in orderbook to ensure sufficient liquidity. Leave empty to disable",
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
"maxSpread": "Max Spread (Absolute Price)",
"maxSpreadTooltip": "Maximum spread (absolute price). Avoid copying in markets with excessive spreads. Leave empty to disable",
"maxSpreadPlaceholder": "For example: 0.05 (5 cents, optional, leave empty to disable)",
"minOrderbookDepth": "Min Orderbook Depth (USDC)",
"minOrderbookDepthTooltip": "Minimum orderbook depth (USDC amount), NULL means this filter is not enabled. Check depth of first N levels",
"minOrderbookDepthPlaceholder": "For example: 50 (optional, leave empty to disable)",
"priceRangeFilter": "Price Range Filter",
"priceRange": "Price Range",
"priceRangeTooltip": "Only copy orders where Leader's trade price is within the specified range. Leave empty to disable. Examples: Fill 0.11 and 0.89 means only copy orders with price between 0.11 and 0.89; Fill only max price 0.89 means only copy orders with price below 0.89; Fill only min price 0.11 means only copy orders with price above 0.11.",
"minPricePlaceholder": "Min Price (leave empty for no limit)",
"maxPricePlaceholder": "Max Price (leave empty for no limit)",
"positionLimitFilter": "Max Position Limit",
"maxPositionValue": "Max Position Value (USDC)",
"maxPositionValueTooltip": "Limit the maximum position value for a single market. If the current position value + copy order amount exceeds this limit, the order will not be placed. Leave empty to disable",
"maxPositionValuePlaceholder": "For example: 100 (optional, leave empty to disable)",
"supportSell": "Support Sell",
"supportSellTooltip": "Whether to copy Leader's sell orders. Enabled: copy both Leader's buy and sell orders; Disabled: only copy Leader's buy orders, ignore sell orders.",
"pushFilteredOrders": "Push Filtered Orders",
"pushFilteredOrdersTooltip": "When enabled, filtered orders will be pushed to Telegram",
"invalidNumber": "Please enter a valid number"
},
"copyTradingAdd": {
"title": "Add Copy Trading Config",
"back": "Back",
"selectWallet": "Select Wallet",
"selectWalletPlaceholder": "Please select wallet",
"walletRequired": "Please select wallet",
"selectLeader": "Select Leader",
"selectLeaderPlaceholder": "Please select Leader",
"leaderRequired": "Please select Leader",
"enabled": "Enabled Status",
"selectTemplate": "Select Template",
"selectTemplateFromModal": "Fill Config from Template",
"templateFilled": "Template content filled, you can modify",
"basicConfig": "Basic Config",
"copyMode": "Copy Amount Mode",
"copyModeTooltip": "Select the calculation method for copy amount. Ratio mode: copy amount changes proportionally with Leader order size; Fixed amount mode: copy amount remains fixed regardless of Leader order size.",
"ratioMode": "Ratio Mode",
"fixedAmountMode": "Fixed Amount Mode",
"ratio": "Ratio",
"fixed": "Fixed",
"copyRatio": "Copy Ratio",
"copyRatioTooltip": "Copy ratio represents the percentage of copy amount relative to Leader order amount. For example: 100% means 1:1 copy, 50% means half position copy, 200% means double copy",
"copyRatioPlaceholder": "For example: 100 means 100% (1:1 copy), default 100%",
"fixedAmount": "Fixed Copy Amount (USDC)",
"fixedAmountPlaceholder": "Fixed amount, does not change with Leader order size, must be >= 1",
"fixedAmountRequired": "Please enter fixed copy amount",
"fixedAmountMin": "Fixed amount must be >= 1",
"maxOrderSize": "Max Order Size (USDC)",
"maxOrderSizeTooltip": "In ratio mode, limits the maximum amount cap for single copy order",
"maxOrderSizePlaceholder": "Only effective in ratio mode (optional)",
"minOrderSize": "Min Order Size (USDC)",
"minOrderSizeTooltip": "In ratio mode, limits the minimum amount floor for single copy order, must be >= 1",
"minOrderSizePlaceholder": "Only effective in ratio mode, must be >= 1 (optional)",
"minOrderSizeMin": "Minimum amount must be >= 1",
"maxDailyLoss": "Max Daily Loss Limit (USDC)",
"maxDailyLossTooltip": "Limits the maximum daily loss amount, used for risk control",
"maxDailyLossPlaceholder": "Default 10000 USDC (optional)",
"maxDailyOrders": "Max Daily Copy Orders",
"maxDailyOrdersTooltip": "Limits the maximum number of copy orders per day",
"maxDailyOrdersPlaceholder": "Default 100 (optional)",
"priceTolerance": "Price Tolerance (%)",
"priceToleranceTooltip": "Allowed adjustment range for copy price based on Leader price",
"priceTolerancePlaceholder": "Default 5% (optional)",
"delaySeconds": "Copy Delay (seconds)",
"delaySecondsTooltip": "Copy delay time, 0 means copy immediately",
"delaySecondsPlaceholder": "Default 0 (copy immediately)",
"filterConditions": "Filter Conditions (Optional)",
"minOrderDepth": "Min Order Depth (USDC)",
"minOrderDepthTooltip": "Check total order amount (bids + asks) in orderbook to ensure sufficient liquidity. Leave empty to disable",
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
"maxSpread": "Max Spread (Absolute Price)",
"maxSpreadTooltip": "Maximum spread (absolute price). Avoid copying in markets with excessive spreads. Leave empty to disable",
"maxSpreadPlaceholder": "For example: 0.05 (5 cents, optional, leave empty to disable)",
"minOrderbookDepth": "Min Orderbook Depth (USDC)",
"minOrderbookDepthTooltip": "Minimum orderbook depth (USDC amount), NULL means this filter is not enabled. Check depth of first N levels",
"minOrderbookDepthPlaceholder": "For example: 50 (optional, leave empty to disable)",
"priceRangeFilter": "Price Range Filter",
"priceRange": "Price Range",
"priceRangeTooltip": "Only copy orders where Leader's trade price is within the specified range. Leave empty to disable. Examples: Fill 0.11 and 0.89 means only copy orders with price between 0.11 and 0.89; Fill only max price 0.89 means only copy orders with price below 0.89; Fill only min price 0.11 means only copy orders with price above 0.11.",
"minPricePlaceholder": "Min Price (leave empty for no limit)",
"maxPricePlaceholder": "Max Price (leave empty for no limit)",
"positionLimitFilter": "Max Position Limit",
"maxPositionValue": "Max Position Value (USDC)",
"maxPositionValueTooltip": "Limit the maximum position value for a single market. If the current position value + copy order amount exceeds this limit, the order will not be placed. Leave empty to disable",
"maxPositionValuePlaceholder": "For example: 100 (optional, leave empty to disable)",
"keywordFilter": "Keyword Filter",
"keywordFilterMode": "Filter Mode",
"keywordFilterModeTooltip": "Select keyword filter mode. Whitelist: only copy markets containing keywords; Blacklist: do not copy markets containing keywords; Disabled: no keyword filtering. Keyword matching is case-insensitive.",
"disabled": "Disabled",
"whitelist": "Whitelist",
"blacklist": "Blacklist",
"keywords": "Keywords",
"keywordPlaceholder": "Enter keyword, press Enter to add",
"keywordExists": "Keyword already exists",
"whitelistTooltip": "💡 Whitelist mode: only copy markets whose titles contain any of the above keywords (case-insensitive)",
"blacklistTooltip": "💡 Blacklist mode: do not copy markets whose titles contain any of the above keywords (case-insensitive)",
"marketEndDateFilter": "Market End Date Limit",
"maxMarketEndDate": "Max Market End Date",
"maxMarketEndDateTooltip": "Only copy orders with market end time less than the set time. For example: 24 hours means only copy markets with less than 24 hours remaining until settlement",
"maxMarketEndDatePlaceholder": "Enter time value (optional)",
"timeUnit": "Unit",
"hour": "Hours",
"day": "Days",
"maxMarketEndDateNote": "💡 Note: Leave blank to disable this filter",
"configName": "Configuration Name",
"configNameRequired": "Please enter configuration name",
"configNamePlaceholder": "e.g., Copy Trading Config 1",
"configNameTooltip": "Set a name for the copy trading configuration for easy identification and management",
"advancedSettings": "Advanced Settings",
"pushFailedOrders": "Push Failed Orders",
"pushFailedOrdersTooltip": "When enabled, failed orders will be pushed to Telegram",
"pushFilteredOrders": "Push Filtered Orders",
"pushFilteredOrdersTooltip": "When enabled, filtered orders will be pushed to Telegram",
"autoRedeem": "Auto Redeem",
"autoRedeemTooltip": "When enabled, the system will automatically redeem redeemable positions. Requires Builder API Key configuration to take effect",
"builderApiKeyNotConfigured": "Builder API Key Not Configured",
"builderApiKeyNotConfiguredDesc": "Auto redeem feature requires Builder API Key configuration to take effect.",
"goToConfigure": "Go to Configure",
"supportSell": "Support Sell",
"supportSellTooltip": "Whether to copy Leader's sell orders",
"create": "Create Copy Trading Config",
"createSuccess": "Copy trading config created successfully",
"createFailed": "Failed to create copy trading config",
"invalidNumber": "Please enter a valid number",
"fetchLeaderFailed": "Failed to get Leader list",
"fetchTemplateFailed": "Failed to get template list",
"templateName": "Template Name",
"noAccounts": "No accounts",
"importAccount": "Import Account",
"noLeaders": "No Leaders",
"addLeader": "Add Leader",
"leaderAssetInfo": "Leader Asset Info",
"loadingAssetInfo": "Loading asset info...",
"totalAsset": "Total Assets",
"availableBalance": "Available Balance",
"positionAsset": "Position Assets",
"fetchAssetInfoFailed": "Failed to fetch asset info"
},
"copyTradingEdit": {
"title": "Edit Copy Trading Config",
"back": "Back",
"wallet": "Wallet",
"leader": "Leader",
"selectWallet": "Wallet",
"selectLeader": "Leader",
"basicConfig": "Basic Config",
"copyMode": "Copy Amount Mode",
"copyModeTooltip": "Select the calculation method for copy amount",
"ratioMode": "Ratio Mode",
"fixedAmountMode": "Fixed Amount Mode",
"copyRatio": "Copy Ratio",
"copyRatioTooltip": "Copy ratio represents the percentage of copy amount relative to Leader order amount",
"copyRatioPlaceholder": "For example: 100 means 100% (1:1 copy)",
"fixedAmount": "Fixed Copy Amount (USDC)",
"fixedAmountPlaceholder": "Fixed amount, does not change with Leader order size, must be >= 1",
"fixedAmountRequired": "Please enter fixed copy amount",
"fixedAmountMin": "Fixed amount must be >= 1",
"maxOrderSize": "Max Order Size (USDC)",
"maxOrderSizeTooltip": "In ratio mode, limits the maximum amount cap for single copy order",
"maxOrderSizePlaceholder": "Only effective in ratio mode (optional)",
"minOrderSize": "Min Order Size (USDC)",
"minOrderSizeTooltip": "In ratio mode, limits the minimum amount floor for single copy order, must be >= 1",
"minOrderSizePlaceholder": "Only effective in ratio mode, must be >= 1 (optional)",
"minOrderSizeMin": "Minimum amount must be >= 1",
"maxDailyLoss": "Max Daily Loss Limit (USDC)",
"maxDailyLossTooltip": "Limits the maximum daily loss amount, used for risk control",
"maxDailyLossPlaceholder": "Default 10000 USDC (optional)",
"maxDailyOrders": "Max Daily Copy Orders",
"maxDailyOrdersTooltip": "Limits the maximum number of copy orders per day",
"maxDailyOrdersPlaceholder": "Default 100 (optional)",
"priceTolerance": "Price Tolerance (%)",
"priceToleranceTooltip": "Allowed adjustment range for copy price based on Leader price",
"priceTolerancePlaceholder": "Default 5% (optional)",
"delaySeconds": "Copy Delay (seconds)",
"delaySecondsTooltip": "Copy delay time, 0 means copy immediately",
"delaySecondsPlaceholder": "Default 0 (copy immediately)",
"filterConditions": "Filter Conditions (Optional)",
"minOrderDepth": "Min Order Depth (USDC)",
"minOrderDepthTooltip": "Check total order amount (bids + asks) in orderbook to ensure sufficient liquidity. Leave empty to disable",
"minOrderDepthPlaceholder": "For example: 100 (optional, leave empty to disable)",
"maxSpread": "Max Spread (Absolute Price)",
"maxSpreadTooltip": "Maximum spread (absolute price). Avoid copying in markets with excessive spreads. Leave empty to disable",
"maxSpreadPlaceholder": "For example: 0.05 (5 cents, optional, leave empty to disable)",
"minOrderbookDepth": "Min Orderbook Depth (USDC)",
"minOrderbookDepthTooltip": "Minimum orderbook depth (USDC amount), NULL means this filter is not enabled",
"minOrderbookDepthPlaceholder": "For example: 50 (optional, leave empty to disable)",
"priceRangeFilter": "Price Range Filter",
"priceRange": "Price Range",
"priceRangeTooltip": "Only copy orders where Leader's trade price is within the specified range. Leave empty to disable. Examples: Fill 0.11 and 0.89 means only copy orders with price between 0.11 and 0.89; Fill only max price 0.89 means only copy orders with price below 0.89; Fill only min price 0.11 means only copy orders with price above 0.11.",
"minPricePlaceholder": "Min Price (leave empty for no limit)",
"maxPricePlaceholder": "Max Price (leave empty for no limit)",
"positionLimitFilter": "Max Position Limit",
"maxPositionValue": "Max Position Value (USDC)",
"maxPositionValueTooltip": "Limit the maximum position value for a single market. If the current position value + copy order amount exceeds this limit, the order will not be placed. Leave empty to disable",
"maxPositionValuePlaceholder": "For example: 100 (optional, leave empty to disable)",
"keywordFilter": "Keyword Filter",
"keywordFilterMode": "Filter Mode",
"keywordFilterModeTooltip": "Select keyword filter mode. Whitelist: only copy markets containing keywords; Blacklist: do not copy markets containing keywords; Disabled: no keyword filtering. Keyword matching is case-insensitive.",
"disabled": "Disabled",
"whitelist": "Whitelist",
"blacklist": "Blacklist",
"keywords": "Keywords",
"keywordPlaceholder": "Enter keyword, press Enter to add",
"keywordExists": "Keyword already exists",
"whitelistTooltip": "💡 Whitelist mode: only copy markets whose titles contain any of the above keywords (case-insensitive)",
"blacklistTooltip": "💡 Blacklist mode: do not copy markets whose titles contain any of the above keywords (case-insensitive)",
"marketEndDateFilter": "Market End Date Limit",
"maxMarketEndDate": "Max Market End Date",
"maxMarketEndDateTooltip": "Only copy orders with market end time less than the set time. For example: 24 hours means only copy markets with less than 24 hours remaining until settlement",
"maxMarketEndDatePlaceholder": "Enter time value (optional)",
"timeUnit": "Unit",
"hour": "Hours",
"day": "Days",
"maxMarketEndDateNote": "💡 Note: Leave blank to disable this filter",
"configName": "Configuration Name",
"configNameRequired": "Please enter configuration name",
"configNamePlaceholder": "e.g., Copy Trading Config 1",
"configNameTooltip": "Set a name for the copy trading configuration for easy identification and management",
"advancedSettings": "Advanced Settings",
"pushFailedOrders": "Push Failed Orders",
"pushFailedOrdersTooltip": "When enabled, failed orders will be pushed to Telegram",
"pushFilteredOrders": "Push Filtered Orders",
"pushFilteredOrdersTooltip": "When enabled, filtered orders will be pushed to Telegram",
"autoRedeem": "Auto Redeem",
"autoRedeemTooltip": "When enabled, the system will automatically redeem redeemable positions. Requires Builder API Key configuration to take effect",
"builderApiKeyNotConfigured": "Builder API Key Not Configured",
"builderApiKeyNotConfiguredDesc": "Auto redeem feature requires Builder API Key configuration to take effect.",
"goToConfigure": "Go to Configure",
"supportSell": "Support Sell",
"supportSellTooltip": "Whether to copy Leader's sell orders",
"save": "Save",
"saveSuccess": "Copy trading config updated successfully",
"saveFailed": "Failed to update copy trading config",
"fetchFailed": "Failed to get copy trading config",
"invalidNumber": "Please enter a valid number"
},
"filteredOrdersList": {
"title": "Filtered Orders List",
"fetchFailed": "Failed to fetch filtered orders list",
"market": "Market",
"outcome": "Outcome",
"price": "Price",
"size": "Size",
"side": "Order Side",
"calculatedQuantity": "Calculated Quantity",
"filterType": "Filter Type",
"filterReason": "Filter Reason",
"createdAt": "Time",
"filterByType": "Filter by Type",
"filterTypes": {
"orderDepth": "Insufficient Order Depth",
"spread": "Spread Too Large",
"orderbookDepth": "Insufficient Orderbook Depth",
"priceValidity": "Invalid Price",
"marketStatus": "Market Not Tradable",
"orderbookError": "Orderbook Fetch Failed",
"orderbookEmpty": "Orderbook Empty",
"priceRange": "Price Range Mismatch",
"maxPositionValue": "Exceeds Max Position Value",
"marketEndDate": "Market End Date Exceeds Limit",
"keywordFilter": "Keyword Filter",
"unknown": "Unknown Reason"
},
"orderDetails": "Order Details",
"noData": "No filtered orders",
"noFilteredOrders": "No filtered orders"
},
"copyTradingList": {
"title": "Copy Trading Config Management",
"addCopyTrading": "Add Copy Trading",
"configName": "Config Name",
"configNameNotProvided": "Not Provided",
"wallet": "Wallet",
"account": "Account",
"template": "Template",
"leader": "Leader",
"copyMode": "Copy Mode",
"ratioMode": "Ratio",
"fixedAmountMode": "Fixed",
"enabled": "Enabled",
"disabled": "Disabled",
"totalPnl": "Total P&L",
"statistics": "Statistics",
"orders": "Orders",
"matchedOrders": "Matched Orders",
"ordersButton": "Orders",
"viewStatistics": "View Statistics",
"buyOrders": "Buy Orders",
"sellOrders": "Sell Orders",
"filteredOrders": "Filtered 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?"
},
"notificationSettings": {
"title": "Notification Settings",
"addConfig": "Add Configuration",
"editConfig": "Edit Configuration",
"configName": "Configuration Name",
"configNamePlaceholder": "e.g., My Telegram Bot",
"configNameRequired": "Please enter configuration name",
"type": "Notification Type",
"typeRequired": "Please select notification type",
"enabled": "Enabled Status",
"status": "Status",
"enabledStatus": "Enabled",
"disabledStatus": "Disabled",
"chatIds": "Chat IDs",
"chatIdsPlaceholder": "Chat IDs (click button above to auto-fetch, or enter manually, separate multiple with commas)",
"chatIdsRequired": "Please enter at least one Chat ID",
"chatIdsExtra": "Multiple Chat IDs separated by commas, e.g., 123456789,987654321. Click button above to auto-fetch (need to send message to bot first)",
"chatIdsCount": " recipients",
"chatIdsNotConfigured": "Not Configured",
"edit": "Edit",
"test": "Test",
"delete": "Delete",
"deleteConfirm": "Are you sure you want to delete this configuration?",
"enableSuccess": "Enabled",
"disableSuccess": "Disabled",
"updateStatusFailed": "Failed to update",
"deleteSuccess": "Deleted successfully",
"deleteFailed": "Failed to delete",
"createSuccess": "Created successfully",
"createFailed": "Failed to create",
"updateSuccess": "Updated successfully",
"updateFailed": "Failed to update",
"fetchFailed": "Failed to get configuration list",
"testSuccess": "Test message sent successfully, please check Telegram",
"testFailed": "Failed to send test message",
"getChatIdsSuccess": "Successfully fetched {count} Chat ID(s)",
"getChatIdsFailed": "Failed to get Chat IDs",
"getChatIdsNoToken": "Please enter Bot Token first",
"getChatIdsNoMessage": "Chat ID not found, please send a message to the bot first (e.g., /start), then retry",
"getChatIdsButton": "Get Chat ID"
},
"telegramConfig": {
"title": "Telegram Configuration Guide",
"step1": "Create a Telegram bot via <strong>@BotFather</strong> and get Bot Token",
"step2": "After entering Bot Token, click 'Get Chat ID' button to auto-fetch (need to send message to bot first)",
"step3": "Or manually get Chat ID via <strong>@userinfobot</strong>",
"step4": "Support multiple Chat IDs (separated by commas), all configured users will receive notifications",
"step5": "Telegram messages will be sent automatically when orders succeed or fail",
"botToken": "Bot Token",
"botTokenPlaceholder": "Bot Token (from @BotFather)",
"botTokenRequired": "Please enter Bot Token"
},
"discordConfig": {
"title": "Discord Configuration Guide",
"step1": "Create a Webhook in Discord server",
"step2": "Copy Webhook URL and enter in configuration",
"step3": "Discord messages will be sent automatically when orders succeed or fail",
"webhookUrl": "Webhook URL",
"webhookUrlPlaceholder": "Webhook URL (from Discord server settings)",
"webhookUrlRequired": "Please enter Webhook URL"
},
"slackConfig": {
"title": "Slack Configuration Guide",
"step1": "Create an Incoming Webhook in Slack workspace",
"step2": "Copy Webhook URL and enter in configuration",
"step3": "Slack messages will be sent automatically when orders succeed or fail",
"webhookUrl": "Webhook URL",
"webhookUrlPlaceholder": "Webhook URL (from Slack App settings)",
"webhookUrlRequired": "Please enter Webhook URL"
},
"announcements": {
"title": "Announcements",
"noAnnouncements": "No announcements",
"noDetail": "Please select an announcement to view details",
"viewMore": "View more announcements",
"author": "Author",
"createdAt": "Published at",
"noTitle": "No title",
"expand": "Expand all",
"collapse": "Collapse",
"refresh": "Refresh",
"list": "List"
},
"copyTradingOrders": {
"title": "Order List",
"buyOrders": "Buy Orders",
"sellOrders": "Sell Orders",
"matchedOrders": "Matched Orders",
"filteredOrders": "Filtered Orders",
"statistics": "Copy Trading Statistics",
"orderId": "Order ID",
"leaderTradeId": "Leader Trade ID",
"market": "Market",
"marketId": "Market ID",
"side": "Side",
"buyQuantity": "Buy Quantity",
"buyPrice": "Buy Price",
"buyAmount": "Buy Amount",
"sellQuantity": "Sell Quantity",
"sellPrice": "Sell Price",
"sellAmount": "Sell Amount",
"matchedQuantity": "Matched",
"remainingQuantity": "Remaining",
"sellStatus": "Sell Status",
"status": "Status",
"statusFilled": "Filled",
"statusPartiallySold": "Partially Sold",
"statusFullySold": "Fully Sold",
"realizedPnl": "Realized PnL",
"createdAt": "Created At",
"matchedAt": "Matched At",
"sellOrderId": "Sell Order ID",
"buyOrderId": "Buy Order ID",
"priceInfo": "Price Info",
"buy": "Buy",
"sell": "Sell",
"buyInfo": "Buy Info",
"sellInfo": "Sell Info",
"matchInfo": "Match Info",
"matched": "Matched",
"remaining": "Remaining",
"quantity": "Quantity",
"price": "Price",
"amount": "Amount",
"filterMarketId": "Filter Market ID",
"filterMarketTitle": "Filter Market Title",
"filterSide": "Filter Side",
"filterStatus": "Filter Status",
"filterSellOrderId": "Filter Sell Order ID",
"filterBuyOrderId": "Filter Buy Order ID",
"noBuyOrders": "No buy orders",
"noSellOrders": "No sell orders",
"noMatchedOrders": "No matched orders",
"groupByMarket": "Group by Market",
"expandAll": "Expand All",
"collapseAll": "Collapse All",
"allFullySold": "All Fully Sold",
"notSold": "Not Sold",
"partiallySold": "Partially Sold",
"orderCount": "Order Count",
"totalAmount": "Total Amount",
"statusBreakdown": "Status",
"allFullyMatched": "All Fully Sold",
"partiallyMatched": "Partially Sold",
"totalPnl": "Total PnL",
"markets": "markets",
"fetchBuyOrdersFailed": "Failed to fetch buy orders",
"fetchSellOrdersFailed": "Failed to fetch sell orders",
"fetchMatchedOrdersFailed": "Failed to fetch matched orders",
"fetchStatisticsFailed": "Failed to fetch statistics",
"noStatistics": "No statistics available",
"totalBuyOrders": "Total Buy Orders",
"totalSellOrders": "Total Sell Orders",
"totalMatchedOrders": "Total Matched Orders",
"totalBuyAmount": "Total Buy Amount",
"totalSellAmount": "Total Sell Amount",
"totalRealizedPnl": "Total Realized PnL",
"totalUnrealizedPnl": "Total Unrealized PnL",
"winRate": "Win Rate",
"averagePnl": "Average PnL",
"maxPnl": "Max PnL",
"minPnl": "Min PnL"
},
"rpcNodeSettings": {
"title": "Polygon RPC Node Configuration",
"fetchFailed": "Failed to fetch node list",
"checkHealthSuccess": "Health check completed",
"checkHealthFailed": "Health check failed",
"deleteSuccess": "Deleted successfully",
"deleteFailed": "Failed to delete",
"adjustPrioritySuccess": "Priority adjusted successfully",
"adjustPriorityFailed": "Failed to adjust priority",
"priority": "Priority",
"providerType": "Provider",
"name": "Name",
"status": "Status",
"statusHealthy": "Available",
"statusUnhealthy": "Unavailable",
"statusUnknown": "Unknown",
"responseTime": "Response Time",
"enabled": "Enabled",
"actions": "Actions",
"check": "Check",
"enableSuccess": "Enabled successfully",
"disableSuccess": "Disabled successfully",
"updateFailed": "Update failed",
"checkSuccess": "Check completed",
"checkFailed": "Check failed",
"deleteConfirm": "Are you sure you want to delete this node?",
"deleteConfirmOk": "Confirm",
"deleteConfirmCancel": "Cancel",
"delete": "Delete",
"batchCheck": "Batch Check",
"addNode": "Add Node",
"addNodeTitle": "Add RPC Node",
"validateAndAdd": "Validate and Add",
"providerTypeLabel": "Provider Type",
"providerTypeRequired": "Please select provider type",
"nodeNameLabel": "Node Name",
"nodeNameRequired": "Please enter node name",
"nodeNamePlaceholder": "e.g.: My Alchemy Node",
"apiKeyLabel": "API Key",
"getApiKey": "Get API Key",
"apiKeyRequired": "Please enter API Key",
"apiKeyPlaceholder": "Enter your API Key",
"httpUrlLabel": "HTTP RPC URL",
"httpUrlRequired": "Please enter HTTP RPC URL",
"httpUrlInvalid": "Please enter a valid URL",
"httpUrlPlaceholder": "https://polygon-rpc.com",
"wsUrlLabel": "WebSocket URL (Optional)",
"wsUrlInvalid": "Please enter a valid URL",
"wsUrlPlaceholder": "wss://polygon-rpc.com",
"validateFailed": "Node validation failed:",
"addSuccess": "Added successfully",
"addFailed": "Failed to add",
"validateError": "Validation failed",
"operationFailed": "Operation failed",
"customNode": "Custom Node",
"providerAlchemy": "Alchemy",
"providerInfura": "Infura",
"providerQuickNode": "QuickNode",
"providerChainstack": "Chainstack",
"providerGetBlock": "GetBlock"
},
"backtest": {
"title": "Backtest",
"taskName": "Task Name",
"leader": "Leader",
"initialBalance": "Initial Balance",
"backtestDays": "Backtest Days",
"status": "Status",
"progress": "Progress",
"startTime": "Start Time",
"endTime": "End Time",
"finalBalance": "Final Balance",
"profitAmount": "Profit Amount",
"profitRate": "Profit Rate",
"totalTrades": "Total Trades",
"buyTrades": "Buy Trades",
"sellTrades": "Sell Trades",
"winTrades": "Win Trades",
"lossTrades": "Loss Trades",
"winRate": "Win Rate",
"maxProfit": "Max Profit",
"maxLoss": "Max Loss",
"maxDrawdown": "Max Drawdown",
"avgHoldingTime": "Avg Holding Time",
"statusPending": "Pending",
"statusRunning": "Running",
"statusCompleted": "Completed",
"statusStopped": "Stopped",
"statusFailed": "Failed",
"createTask": "Create Backtest Task",
"taskList": "Backtest Task List",
"taskDetail": "Backtest Task Detail",
"tradeRecords": "Trade Records",
"config": "Configuration",
"statistics": "Statistics",
"chart": "Balance Chart",
"createSuccess": "Created successfully",
"createFailed": "Failed to create",
"deleteSuccess": "Deleted successfully",
"deleteFailed": "Failed to delete",
"stop": "Stop",
"stopSuccess": "Stopped successfully",
"stopFailed": "Failed to stop",
"retry": "Retry",
"retrySuccess": "Retry successfully",
"retryFailed": "Failed to retry",
"retryConfirm": "Are you sure you want to retry this backtest task? It will continue from the breakpoint and preserve processed trades.",
"deleteConfirm": "Are you sure you want to delete this backtest task?",
"stopConfirm": "Are you sure you want to stop this backtest task?",
"createCopyTrading": "Create Copy Trading",
"createCopyTradingSuccess": "Copy trading config created successfully",
"noTasks": "No backtest tasks",
"noTrades": "No trade records",
"fetchTasksFailed": "Failed to fetch task list",
"fetchTaskDetailFailed": "Failed to fetch task detail",
"fetchTradesFailed": "Failed to fetch trade records",
"balanceChart": "Balance Change",
"pnlChart": "PnL Change",
"executionTime": "Execution Time",
"runningDuration": "Running Duration",
"estimatedRemaining": "Estimated Remaining",
"leaderAddress": "Leader Address",
"leaderName": "Leader Name",
"copyMode": "Copy Mode",
"copyModeRatio": "Ratio",
"copyModeFixed": "Fixed Amount",
"copyRatio": "Copy Ratio",
"fixedAmount": "Fixed Amount",
"maxOrderSize": "Max Order Size",
"minOrderSize": "Min Order Size",
"maxDailyLoss": "Max Daily Loss",
"maxDailyOrders": "Max Daily Orders",
"priceTolerance": "Price Tolerance",
"delaySeconds": "Delay Seconds",
"supportSell": "Copy Sell",
"minOrderDepth": "Min Order Depth",
"maxSpread": "Max Spread",
"minPrice": "Min Price",
"maxPrice": "Max Price",
"maxPositionValue": "Max Position Value",
"keywordFilterMode": "Keyword Filter Mode",
"keywordFilterModeDisabled": "Disabled",
"keywordFilterModeWhitelist": "Whitelist",
"keywordFilterModeBlacklist": "Blacklist",
"keywords": "Keywords",
"maxMarketEndDate": "Market End Date Limit",
"tradeTime": "Trade Time",
"marketId": "Market ID",
"marketTitle": "Market Title",
"side": "Side",
"sideBuy": "Buy",
"sideSell": "Sell",
"sideSettlement": "Settlement",
"outcome": "Outcome",
"quantity": "Quantity",
"price": "Price",
"amount": "Amount",
"fee": "Fee",
"profitLoss": "Profit/Loss",
"balanceAfter": "Balance After",
"leaderTradeId": "Leader Trade ID",
"loading": "Loading...",
"refreshing": "Refreshing...",
"starting": "Starting...",
"stopping": "Stopping...",
"errorOccurred": "Error occurred",
"retry": "Retry",
"taskNameRequired": "Please enter task name",
"leaderRequired": "Please select Leader",
"initialBalanceRequired": "Please enter initial balance",
"initialBalanceInvalid": "Initial balance must be greater than 0",
"backtestDaysRequired": "Please enter backtest days",
"backtestDaysInvalid": "Backtest days must be between 1-15",
"copyRatioRequired": "Please enter copy ratio",
"copyRatioInvalid": "Copy ratio must be between 0.01-10000",
"copyRatioPlaceholder": "For example: 100 means 100% (1:1 copy), default 100%",
"copyRatioTooltip": "Copy ratio represents the percentage of copy amount relative to Leader order amount. For example: 100% means 1:1 copy, 50% means half position copy, 200% means double copy",
"fixedAmountRequired": "Please enter fixed amount",
"fixedAmountInvalid": "Fixed amount must be greater than 0",
"priceFilters": "Price Filters",
"priceRange": "Price Range",
"priceRangeTooltip": "Only copy Leader orders with price within the specified range. Leave empty to disable. Example: Enter 0.11 and 0.89 to only copy orders with price between 0.11 and 0.89; enter only max price 0.89 to only copy orders with price below 0.89; enter only min price 0.11 to only copy orders with price above 0.11.",
"minPricePlaceholder": "Min price (leave empty to disable)",
"maxPricePlaceholder": "Max price (leave empty to disable)",
"keywordsPlaceholder": "Please enter keywords, press Enter to add",
"maxPositionValuePlaceholder": "Leave empty to disable max position limit",
"delaySecondsHint": "Delay execution to simulate real copy trading delay",
"supportSellHint": "Whether to follow Leader sell orders",
"sortBy": "Sort By",
"sortOrder": "Sort Order",
"createdAt": "Created At",
"rerun": "Re-run",
"rerunConfirm": "Create a new backtest task with the same config?",
"rerunTaskNamePlaceholder": "New task name (leave empty for \"Original name (copy)\")",
"rerunSuccess": "New backtest task created",
"rerunFailed": "Re-run failed"
},
"cryptoTailStrategy": {
"list": {
"title": "Crypto Tail Strategy",
"walletTip": "Use a dedicated wallet for tail strategy. Do not use it for manual trading or copy trading to avoid balance/position issues.",
"addStrategy": "Add Strategy",
"strategyName": "Strategy Name",
"market": "Market",
"timeWindow": "Time Window",
"priceRange": "Price Range",
"amountMode": "Amount Mode",
"ratio": "Ratio",
"fixed": "Fixed",
"recentTrigger": "Last Trigger",
"totalRealizedPnl": "Total PnL",
"winRate": "Win Rate",
"actions": "Actions",
"edit": "Edit",
"enable": "Enable",
"disable": "Disable",
"delete": "Delete",
"viewTriggers": "Trigger Records",
"deleteConfirm": "Delete this strategy?",
"fetchFailed": "Failed to fetch list"
},
"form": {
"walletTip": "Use a dedicated wallet to avoid balance or order issues.",
"strategyName": "Strategy Name",
"strategyNamePlaceholder": "Auto",
"selectAccount": "Select Account",
"selectMarket": "Select Market",
"timeWindowStart": "Window Start",
"timeWindowEnd": "Window End",
"minute": "min",
"second": "sec",
"minPrice": "Min Price",
"maxPrice": "Max Price",
"maxPricePlaceholder": "Default 1",
"amountMode": "Amount Mode",
"ratioPercent": "Ratio %",
"fixedUsdc": "Fixed (USDC)",
"enabled": "Enabled",
"create": "Create",
"update": "Update",
"timeWindowStartLEEnd": "Window start must not be greater than end",
"timeWindowExceed": "Time window must not exceed period length",
"minSpreadMode": "Min spread",
"minSpreadModeTip": "Whether to place an order is based on the spread between open and close in the current period. Auto: system computes a suggested spread from the last 20 klines (updated each period); Fixed: you enter a value (e.g. 30), order only when spread ≥ that value; None: no spread check, order when price is in range.",
"minSpreadModeNone": "None",
"minSpreadModeFixed": "Fixed",
"minSpreadModeAuto": "Auto",
"minSpreadValue": "Min spread value (USDC)",
"minSpreadValuePlaceholder": "e.g. 30"
},
"redeemRequiredModal": {
"title": "Configure Auto Redeem First",
"description": "Tail strategy requires auto redeem. Please configure Builder API Key and enable auto redeem in System Settings.",
"goToSettings": "Go to Settings",
"cancel": "Cancel"
},
"triggerRecords": {
"title": "Trigger Records",
"triggerTime": "Time",
"market": "Market",
"direction": "Direction",
"up": "Up",
"down": "Down",
"triggerPrice": "Trigger Price",
"amount": "Amount",
"orderId": "Order ID",
"status": "Status",
"success": "Success",
"fail": "Fail",
"realizedPnl": "PnL",
"resolved": "Settled"
}
}
}