This commit is contained in:
2026-04-24 20:30:52 +08:00
commit 704bc34625
152 changed files with 45612 additions and 0 deletions

7
src/locales/en_US.ts Normal file
View File

@@ -0,0 +1,7 @@
import menu from './en_US/menu';
import pages from './en_US/pages';
export default {
...menu,
...pages,
};

60
src/locales/en_US/menu.ts Normal file
View File

@@ -0,0 +1,60 @@
export default {
'menu.welcome': 'Welcome',
'menu.home': 'Home',
'menu.login': 'Login',
'menu.dashboard': 'Dashboard',
'menu.dashboard.desc': 'View Dashboard',
'menu.rules': 'Rules',
'menu.rule': 'Rule',
'menu.rules.desc': 'Manage Rules',
'menu.rules.largeTradeLots': 'Large Trade (Lots)',
'menu.rules.largeTradeLots.desc':
'Monitor trades with lots exceeding threshold',
'menu.rules.largeTradeUSD': 'Large Trade (USD)',
'menu.rules.largeTradeUSD.desc':
'Monitor trades with USD value exceeding threshold',
'menu.rules.liquidityTrade': 'Liquidity Trade',
'menu.rules.liquidityTrade.desc':
'Monitor frequent small trades in short time',
'menu.rules.scalping': 'Scalping',
'menu.rules.scalping.desc': 'Monitor short-duration high-frequency trades',
'menu.rules.exposureAlert': 'Exposure Alert',
'menu.rules.exposureAlert.desc': 'Monitor currency net exposure limits',
'menu.rules.pricingVolatility': 'Pricing & Volatility',
'menu.rules.pricingVolatility.desc':
'Monitor price gaps and extreme volatility',
'menu.rules.pricing': 'Pricing',
'menu.rules.pricing.desc': 'Monitor price gaps',
'menu.rules.volatility': 'Volatility',
'menu.rules.volatility.desc': 'Monitor extreme price fluctuations',
'menu.rules.NOPLimit': 'NOP Limit',
'menu.rules.NOPLimit.desc': 'Monitor net open position limits',
'menu.rules.watchList': 'Watch List',
'menu.rules.watchList.desc': 'Monitor specific high-priority accounts',
'menu.rules.reversePositions': 'Reverse Positions',
'menu.rules.reversePositions.desc': 'Monitor quick reversals after closing',
'menu.rules.depositWithdrawal': 'Deposit & Withdrawal',
'menu.rules.depositWithdrawal.desc': 'Monitor large fund movements',
'menu.products': 'Product List',
'menu.products.desc': 'View Products',
'menu.alert': 'Alerts',
'menu.alert.desc': 'View Alerts',
'menu.account': 'Trade Account',
'menu.account.desc': 'Manage Trade Accounts',
'menu.company': 'Companies',
'menu.company.desc': 'Manage Companies',
'menu.dataSource': 'Data Sources',
'menu.dataSource.desc': 'Manage Data Sources',
'menu.user': 'Users',
'menu.user.desc': 'Manage Users',
'menu.role': 'Roles',
'menu.role.desc': 'Manage Roles',
'menu.config': 'Global Settings',
'menu.config.desc': 'Manage Global Settings',
'menu.profile': 'Profile',
'menu.emailServices': 'Email Services',
'menu.emailServices.desc': 'Manage Email Services',
'menu.operLog': 'Audit Logs',
'menu.operLog.desc': 'View Operation Logs',
};

674
src/locales/en_US/pages.ts Normal file
View File

@@ -0,0 +1,674 @@
export default {
'common.loading': 'Loading...',
'common.content.noRules': 'No rules available',
'common.content.noData': 'No data available',
'table.group': 'Group',
'table.operatorRecords': 'Operator Records',
'table.operatorAction': 'Operator Action',
'table.operatorTime': 'Operator Time',
'table.os': 'Operating System',
'table.browser': 'Browser',
'table.timerange': 'Time Range',
'table.volume': 'Lots',
'table.cmd': 'Trade Type',
'table.openTime': 'Open Time',
'table.profit': 'Profit',
'table.unit.datasource': 'unit(s)',
'table.unit.users': 'person(s)',
'table.time': 'Time',
'table.account': 'Trade Account',
'table.symbol': 'Symbol',
'table.trigger': 'Value',
'table.triggerValue': 'Triggered Value',
'table.status': 'Status',
'table.id': 'ID',
'table.alertId': 'Alert ID',
'table.accountId': 'Account ID',
'table.companyId': 'Company ID',
'table.dataSourceId': 'Data Source ID',
'table.dataSource': 'Data Source',
'table.dataSourceTime': 'Data Source Server Time',
'table.userId': 'User ID',
'table.roleId': 'Role ID',
'table.company': 'Company',
'table.ruleType': 'Rule Type',
'table.platform': 'Platform',
'table.detail': 'Details',
'table.summary': 'Summary',
'table.triggerTime': 'Trigger Time',
'table.action': 'Actions',
'table.currency': 'Currency',
'table.balance': 'Balance',
'table.equity': 'Equity',
'table.marginLevel': 'Margin Level',
'table.alertCount': 'Alerts',
'table.companyName': 'Company Name',
'table.contactEmail': 'Contact Email',
'table.dataSourceCount': 'Data Sources',
'table.userCount': 'Users',
'table.createTime': 'Create Time',
'table.name': 'Name',
'table.ipAddress': 'IP Address',
'table.ruleCount': 'Rules',
'table.username': 'Username',
'table.displayName': 'Display Name',
'table.role': 'Role',
'table.roleIdentifier': 'Role Key',
'table.roleName': 'Role Name',
'table.permissionLevel': 'Permission Level',
'table.type': 'Type',
'table.permissionCount': 'Permissions',
'table.operator': 'Operator',
'table.actionType': 'Action',
'table.description': 'Detail Desc',
'table.all': 'All',
'table.new': 'Pending',
'table.viewed': 'Viewed',
'table.ignored': 'Ignored',
'table.ignored2': 'Ignore',
'table.action.add': 'Add ',
'table.action.view': 'View ',
'table.action.delete': 'Delete ',
'table.action.other': 'Other Actions',
'table.action.deleteDone': 'Deleted',
'table.action.edit': 'Edit ',
'table.action.export': 'Export',
'table.action.allRead': 'Mark All Read',
'table.dataSource.status0': 'Connecting',
'table.dataSource.status1': 'Running',
'table.dataSource.status2': 'Connection Failed',
'table.dataSource.status3': 'Deleting',
'table.user.status0': 'Disabled',
'table.user.status1': 'Active',
'table.role.type0': 'System',
'table.role.type1': 'Custom',
'pages.totalUserCount': 'Total Accounts',
'pages.totalAlertCount': 'Total Alerts',
'pages.totalCompanyCount': 'Total Companies',
'pages.activeCompanyCount': 'Active Companies',
'pages.totalDataSourceCount': 'Total Data Sources',
'pages.activeDataSourceCount': 'Active Data Sources',
'pages.mt4DataSourceCount': 'MT4 Data Sources',
'pages.mt5DataSourceCount': 'MT5 Data Sources',
'pages.adminCount': 'Admins',
'pages.operatorCount': 'Operators',
'pages.readOnlyUserCount': 'Read-Only Users',
'pages.totalRoleCount': 'Total Roles',
'pages.systemRoleCount': 'System Roles',
'pages.customRoleCount': 'Custom Roles',
'pages.availablePermissionList': 'Available Permissions',
'pages.dashboard.todayAlertCount': 'Today Alerts',
'pages.dashboard.activeRuleCount': 'Active Rules',
'pages.dashboard.monitoringAccountCount': 'Alerted Accounts',
'pages.dashboard.alertProcessingRate': 'Resolution Rate',
'pages.dashboard.todayTransactionCount': 'Today Trades',
'pages.dashboard.alertTrend': 'Alert Trend',
'pages.dashboard.globalView': 'Global View',
'pages.dashboard.ruleTriggerDistribution': 'Rule Trigger Distribution',
'pages.dashboard.latestAlert': 'Latest Alerts',
'pages.dashboard.platformTransactionVolume': 'Platform Volume',
'pages.dashboard.viewAll': 'View All',
'pages.dashboard.recentAlerts': 'Recent Alerts',
'pages.user.roleDesc.superAdmin': 'Can manage all companies, users and data',
'pages.user.roleDesc.companyAdmin':
'Manage current company data sources and users',
'pages.user.roleDesc.companyOperator':
'Configure rules for allocated data sources',
'pages.user.roleDesc.companyViewer': 'View alert records only',
'pages.user.roleDesc.header': 'Role Permissions Description',
'pages.role.system.superAdmin': 'Super Admin',
'pages.role.system.companyAdmin': 'Company Admin',
'pages.role.system.companyOperator': 'Company User',
'pages.role.system.companyViewer': 'Viewer',
'pages.tips.emptyIsAll': 'Empty for all',
'pages.account.pop.title': 'Account Details',
'pages.alert.pop.title': 'Alert Details',
'pages.alert.pop.title2': 'Basic Info',
'pages.alert.pop.title3': 'Trigger Rule Snapshot',
'pages.alert.pop.title4': 'Associated Trade Records',
'pages.alert.newAlertTips': 'You have new alerts, click "Reset" to refresh',
'pages.rules.seconds': 'Seconds',
'pages.rules.lots': 'Lots',
'pages.rules.triggerValue': 'Lot Threshold',
'pages.rules.triggerValueUSD': 'USD Threshold',
'pages.rules.monitoredSymbols': 'Monitored Symbols',
'pages.rules.monitoredGroups': 'Monitored Groups',
'pages.rules.allGroups': 'All Groups',
'pages.rules.allSymbols': 'All Symbols',
'pages.rules.allAssets': 'All Assets',
'pages.rules.trigger': 'Triggered',
'pages.rules.triggeredCount': 'Times',
'pages.rules.disable': 'Disable',
'pages.rules.enable': 'Enable',
'pages.rules.status0': 'Pending',
'pages.rules.status1': 'Running',
'pages.rules.status2': 'Disabled',
'pages.rules.status3': 'Edit Pending',
'pages.rules.status4': 'Delete Pending',
'pages.rules.status5': 'Deleted',
'pages.rules.reportInterval': 'Report Interval',
'pages.rules.ruleName': 'Rule Name',
'pages.rules.clone': 'Clone',
'pages.rules.cloneConfirm': 'Confirm Clone',
'pages.rules.cloneRule': 'Clone Rule',
'pages.rules.originalRule': 'Original Rule (Read-Only)',
'pages.rules.cloneRulePreview': 'Clone Rule Preview (Editable)',
'pages.rule3.timeWindow': 'Time Window',
'pages.rule3.minOrderCount': 'Min Order Count',
'pages.rule3.minOrderCount.tips': 'Orders',
'pages.rule3.totalLotsThreshold': 'Total Lot Threshold',
'pages.rule3.aggregationLogic': 'Aggregation Logic',
'pages.rule3.option1': 'By Virtual Category',
'pages.rule3.option2': 'By Individual Variety',
'form.rule3.tips':
'Tip: System automatically groups orders by direction (BUY/SELL). Only same-direction orders are counted together.',
'pages.rule4.item1': 'Duration Threshold',
'pages.rule4.item2': 'Min Close Profit',
'pages.rule4.item3': 'Min Close Lot',
'pages.rule4.item4': 'Min Close USD Value',
'form.rule4.tips': 'Tip: Monitor short-duration high-frequency trades.',
'pages.rule5.item1': 'Target Currency',
'pages.rule5.item2': 'Exposure Threshold',
'pages.rule5.item3': 'Time Interval',
'pages.rule5.item4': 'Max Remind Count',
'form.rule5.tips': 'Tip: Monitor currency net exposure limits.',
'pages.rule5_1.item1': 'Monitored Assets',
'pages.rule5_1.item2': 'Upper Threshold',
'pages.rule5_1.item4': 'Lower Threshold',
'pages.rule5_1.item5': 'Conversion Currency',
'pages.rule5_1.validateError2':
'Upper threshold cannot be less than lower threshold',
'pages.rule5_1.validateError4':
'Lower threshold cannot be greater than upper threshold',
// 'pages.rule6.item1': 'Stop Pricing Duration',
// 'pages.rule6.item2': 'Volatility Threshold',
// 'pages.rule6.item3': 'Volatility Mode',
// 'pages.rule6.option1': 'Points (Points)',
// 'pages.rule6.option2': 'Percentage (%)',
// 'form.rule6.tips': 'Tip: Monitor price gaps and extreme volatility.',
'pages.rule6_1.item1': 'Stop Pricing Duration',
'form.rule6_1.tips': 'Tip: Monitor price gaps.',
'pages.rule11.item1': 'Volatility Mode',
'pages.rule11.option1': 'Points',
'pages.rule11.option2': 'Percentage (%)',
'pages.rule11.item2': 'Time Window',
'pages.rule11.item3': 'Max Fluctuation',
'form.rule11.tips': 'Tip: Monitor extreme price fluctuations.',
'pages.rule7.item1': 'Platform Type',
'pages.rule7.option1': 'MT4 (Coefficient: 100)',
'pages.rule7.option2': 'MT5 (Coefficient: 10000)',
'pages.rule7.item2': 'NOP Threshold',
'pages.rule7.item3': 'Calculation Frequency',
'pages.rule7.item4': 'Alert Cooldown',
'form.rule7.tips': 'Tip: Monitor net open position limits.',
'pages.rule8.item1': 'Monitored Accounts',
'pages.rule8.item1.tips': 'IDs, comma separated',
'pages.rule8.item2': 'Monitoring Actions',
'pages.rule8.option1': 'Open Trade',
'pages.rule8.option2': 'Pending Order',
'pages.rule8.item3': 'Min Lots Limit',
'form.rule8.tips': 'Tip: Monitor specific high-priority accounts.',
'pages.rule9.item1': 'Max Reverse Interval',
'pages.rule9.item2': 'Min Reverse Lot',
'pages.rule9.item3': 'Min Reverse USD Value',
'form.rule9.tips': 'Tip: Monitor quick reversals after closing.',
'pages.rule10.item1': 'Deposit Threshold',
'pages.rule10.item2': 'Withdraw Threshold',
'pages.rule10.item3': 'Include Keywords',
'pages.rule10.item3.tips': 'Comma-separated',
'form.rule10.tips': 'Tip: Monitor large fund movements.',
'form.rules.header': 'Current rule logic:',
'form.rules.header.content1':
'If open lots ≥ <yellow>{lots}</yellow>, for symbols: <green>{symbols}</green>, trigger alert.',
'form.rules.header.content2':
'If open amount ≥ <yellow>{amount}</yellow>, for symbols: <green>{symbols}</green>, trigger alert.',
'form.rules.header.content3':
'Within <yellow>{seconds}</yellow> seconds, if orders ≥ <yellow>{orderCount}</yellow> AND total lots ≥ <yellow>{totalLots}</yellow>, monitoring <green>{symbols}</green> by <yellow>{aggregationLogic}</yellow> trigger alert.',
'form.rules.header.content4':
'Upon closing (incl. partial close), <blue>Duration < </blue> <yellow>{seconds}</yellow> <blue>seconds</blue> AND <blue>Close Lots ≥ </blue> <yellow>{lots}</yellow> AND <blue>Close Profit ≥ </blue> <yellow>{profitValue}</yellow> for <green>{symbols}</green> trades trigger alert.',
'form.rules.header.content5':
'If <yellow>{currency}</yellow> exposure ≥ <yellow>{exposureValue}</yellow>, triggered every <yellow>{interval}</yellow> seconds.',
'form.rules.header.content5_1':
'If <green>{assets}</green> exposure ≥ <yellow>$ {upperThreshold}</yellow> or ≤ <yellow>$ {lowerThreshold}</yellow>, triggered every <yellow>{interval}</yellow> seconds.',
'form.rules.header.content6':
'For symbols <green>{symbols}</green>, if pricing stops ≥ <yellow>{stopTime}</yellow> seconds, OR volatility ≥ <yellow>{volatility}</yellow> (<yellow>{volatilityUnit}</yellow>), triggered every <yellow>{interval}</yellow> seconds.',
'form.rules.header.content6_1':
'For symbols <green>{symbols}</green>, if pricing stops ≥ <yellow>{stopTime}</yellow> seconds, trigger alert.',
'form.rules.header.content11':
'For symbols <green>{symbols}</green>, if price fluctuates ≥ <yellow>{volatility}</yellow> (<yellow>{volatilityUnit}</yellow> mode) within <yellow>{timeWindow}</yellow>, trigger alert.',
'form.rules.header.content7':
'If NOP for <green>{symbols}</green> ≥ <yellow>{nopLimit}</yellow>, trigger alert.',
'form.rules.header.content8':
'Monitoring account(s) <yellow>{tradeAccounts}</yellow> for <yellow>{action}</yellow>, if lots ≥ <yellow>{lots}</yellow>, trigger alert.',
'form.rules.header.content9':
'Within <yellow>{seconds}</yellow> seconds after closing, reverse trade lots ≥ <yellow>{lots}</yellow> OR value ≥ <yellow>{usdValue}</yellow>, monitoring <green>{symbols}</green> trigger alert.',
'form.rules.header.content10':
'Monitoring deposit ≥ <yellow>{depositValue}</yellow> OR withdrawal ≥ <yellow>{withdrawValue}</yellow> (incl. keywords: <yellow>{keywords}</yellow>), trigger alert.',
'form.rule1.ignoreSimulatedAccount': 'Ignore Demo Accounts',
'form.rule1.tips': 'Tip: Monitor trades exceeding lot threshold.',
'form.rule1.tips2': 'Click to search, or category title to select all.',
'form.rule2.keyword': 'Cent Account Groups Keywords',
'form.rule2.keyword.placeholder': 'e.g. *CENT*,*MICRO*',
'form.rule2.tips': 'Tip: Monitor trades exceeding USD value threshold.',
'form.selectOrSearch': 'Plese Select or Search',
'form.required': 'This field is required',
'form.password': 'Password',
'form.example': 'Example',
'form.range': 'Range',
'form.placeholder.ipAddress':
'Please input a valid IPv4 address (e.g. 192.168.1.1)',
'form.dataSource.name': 'Data Source Name',
'form.dataSource.type': 'Platform Type',
'form.dataSource.connectionConfig': 'Connection Config',
'form.dataSource.ipAddress': 'IP Address',
'form.dataSource.port': 'Port',
'form.dataSource.tradeAccount': 'Trade Account',
'form.user.title': 'User',
'form.user.dataSourceIds': 'Bound Data Sources',
'form.user.dataSourceEmptyTips':
'Optional data sources are empty. Please add if needed.',
'form.user.displayName': 'Display Name',
'form.user.email': 'Email',
'form.email.placeholder': 'Please input a valid email address',
'form.password.repeatPassword': 'Repeat Password',
'form.password.passwordNotMatch':
'This input does not match the first password input.',
'form.password.placeholder': 'Password must be at least 6 characters',
'form.password.tips':
'Tip: Use letters, numbers, and symbols for stronger passwords.',
'form.password.strength': 'Strength',
'form.password.level0': 'Very Weak',
'form.password.level1': 'Weak',
'form.password.level2': 'Medium',
'form.password.level3': 'Strong',
'form.role.title': 'Role',
'form.role.preview': 'Preview',
'form.role.roleKey': 'Role Key',
'form.role.roleKey.placeholder':
'e.g. risk_analyst (only letters, numbers, and underscores are allowed)',
'form.role.roleKey.placeholder2':
'Only letters, numbers, and underscores are allowed.',
'form.role.roleName': 'Role Name',
'form.role.roleName.placeholder': 'e.g. Risk Analyst',
'form.role.level': 'Permission Level',
'form.role.level.placeholder':
'1-{level}, higher value means higher permission, can modify low permission user information',
'form.role.placeholder2': 'System roles cannot modify permission levels',
'form.role.badgeColor': 'Badge Color',
'form.role.menuIds': 'Bound Permissions (Menus)',
'form.config.timezone': 'Timezone Settings',
'form.config.timezone.title': 'Default Timezone',
'form.config.dataSet': 'Data Settings',
'form.config.dataSet.backDays': 'Alert Retention (Days)',
'form.config.dataSet.backDays.tips':
'Alerts older than this will be auto-archived',
'form.config.dataSet.refresh': 'Auto Refresh Interval (Sec)',
'form.config.notification': 'Notification Settings',
'form.config.emailNotification': 'Email Notification',
'form.config.emailNotification.tips': 'Send email on new alert',
'form.config.soundNotification': 'Sound Alert',
'form.config.soundNotification.tips': 'Play sound for high-risk alerts',
'form.config.frontNotice': 'Frontend Push',
'form.config.frontNotice.tips': 'Enable frontend push and related settings',
'form.config.desktopNotification': 'Desktop Notification',
'form.config.desktopNotification.notSupport':
'Browser does not support desktop notifications',
'form.config.desktopNotification.tips': 'Browser desktop notifications',
'form.config.desktopNotification.tips2':
'Desktop notification permission cannot be re-prompted',
'form.config.desktopNoticeRefuseTips':
'Desktop notification permission denied',
'form.config.desktopNoticeRefuseTips2':
'Desktop notification permission once denied, cannot be re-prompted. To enable, please grant permission in browser settings or reset.',
'form.config.noticeOnButNotWorkTips':
'If you have enabled desktop notifications but are not receiving any, please check the following:',
'form.config.noticeOnButNotWorkTips2':
'Check if the system is in "Do Not Disturb" or "Focus" mode (most common)',
'form.config.noticeOnButNotWorkTips3': 'Settings → System → Notifications',
'form.config.noticeOnButNotWorkTips4':
'Ensure "Get notifications from applications and other senders" is enabled',
'form.config.noticeOnButNotWorkTips5':
'Find your browser in the list and ensure its switch is also enabled',
'form.config.noticeOnButNotWorkTips6':
'Check if "Focus Assistant" is disabled',
'form.config.noticeOnButNotWorkTips7':
'System Settings → Notifications → Focus Mode',
'form.config.noticeOnButNotWorkTips8': 'Ensure "Do Not Disturb" is disabled',
'form.config.noticeOnButNotWorkTips9':
'Find your browser in the list and ensure "Allow notifications" is checked',
'form.config.webhook': 'Webhook Notifications',
'form.config.webhook.telegram.title': 'Telegram Notifications',
'form.config.webhook.telegramBotToken': 'Bot Token',
'form.config.webhook.telegramBotToken.tips':
'From @BotFather to get the API Token.',
'form.config.webhook.telegramChatId': 'Chat ID',
'form.config.webhook.telegramChatId.tips':
'Add the bot to the group and get the Chat ID.',
'form.config.webhook.teams.title': 'Teams Notifications',
'form.config.webhook.teams.tips': 'Paste your Teams Webhook URL here.',
'form.config.webhook.teams': 'Teams Webhook',
'form.config.webhook.slack.title': 'Slack Notifications',
'form.config.webhook.slack.tips': 'Paste your Slack Webhook URL here.',
'form.config.webhook.slack': 'Slack Webhook',
'form.config.webhook.lark.title': 'Lark Notifications',
'form.config.webhook.lark.tips': 'Paste your Lark Bot Webhook URL here.',
'form.config.webhook.lark': 'Lark Webhook',
'form.config.updateSuccess': 'Configuration updated successfully',
'form.config.inputURLTips': 'Please input a valid URL format',
'pages.layouts.userLayout.title': 'Trading Risk Control System',
'pages.login.failure': 'Login failed, please try again later!',
'pages.login.success': 'Login successful!',
'pages.login.username': 'Email',
'pages.login.username.required': 'Please input your username!',
'pages.login.password': 'Password',
'pages.login.password.required': 'Please input your password!',
'pages.login.submit': 'Login',
'pages.404.subTitle': 'Sorry, the page you visited does not exist.',
'pages.404.buttonText': 'Back Home',
'pages.500.title': 'Service Exception',
'pages.500.subTitle':
'Failed to get menu or permission information, please try to refresh the page later.',
'pages.refresh': 'Refresh Page',
'pages.logout': 'Logout',
'pages.profile': 'Profile',
'pages.profile.basicInfo': 'Basic Information',
'pages.profile.changePassword': 'Change Password',
'pages.systemDirectly': 'System Directly',
'pages.confirmModify': 'Confirm Modify',
'pages.oldPassword': 'Old Password',
'pages.oldPassword.tips': 'Please input current login password',
'pages.newPassword': 'New Password',
'pages.confirmPassword': 'Confirm New Password',
'pages.changePasswordSuccess':
'Modification successful. You will be redirected to log in again shortly.',
'pages.changePassTips':
'You are using the system initial password. For your account privacy and operation security, it is recommended that you change your password now.',
'pages.goLogin': 'Go to login',
'pages.laterHandle': 'Handle later',
'pages.loginFirst': 'Please log in first',
'pages.notice.retryMaxTips': 'Max retry count reached, connection failed',
'pages.notice.onError':
'Connection interrupted, please check network and retry manually',
'pages.notice.status.processing': 'Connecting (Retry:{retryCount})',
'pages.notice.status.success': 'Web Notification Service Online',
'pages.notice.status.error':
'Web Notification Service Connection Failed, Please Check Network and Retry Manually',
'pages.notice.status.closed': 'Web Notification Service Disconnected',
'pages.notice.status.default': 'Web Notification Service Not Connected',
'pages.notice.status.replaced':
'Other End Connected, Please Reconnect to Continue',
'pages.notice.status.processing.title': 'Connecting',
'pages.notice.status.success.title': 'Online',
'pages.notice.status.error.title': 'Connection Failed',
'pages.notice.status.closed.title': 'Disconnected',
'pages.notice.status.default.title': 'Not Connected',
'pages.notice.status.replaced.title': 'Replaced',
'pages.notice.button.reconnect': 'Reconnect',
'pages.tips.operationSuccess': 'Operation Successful',
'pages.tips.operationFailed': 'Operation Failed',
'notice.title': 'Alert Notification',
'notice.title1': 'Alert Type',
'notice.title2': 'You have {count} alert notifications',
'pages.model.delete': 'Delete Task',
'pages.model.delete.content':
'Are you sure you want to delete this task? This action cannot be undone.',
'pages.model.disable': 'Disable User',
'pages.model.disable.content':
'After disabling, this user will not be able to log in to the system. Are you sure you want to disable it?',
'pages.model.confirm': 'Confirm',
'pages.model.cancel': 'Cancel',
'pages.model.allRead.content':
'Are you sure you want to mark all notifications as read?',
'pages.export.noData': 'No data available for export',
'pages.export.exporting': 'Exporting, please wait...',
'pages.export.exportSuccess': 'Export Successful',
'pages.export.exportFailed': 'Export Failed, please try again',
'pages.products.noBindDataSource':
'The current user does not have a data source bound to their account. Please bind a data source first, or contact the company administrator to bind a data source before viewing.',
'pages.products.noBindDataSource.superadmin':
'No data source available, please add first',
'pages.products.bindDataSource': 'Bind Data Source',
'pages.products.goto': 'Go to',
'pages.products.directory': 'Product Directory',
'pages.products.directory.tips':
'Please select a directory or start searching',
'pages.products.search': 'Global Search Product Name',
'pages.products.searchResult': 'Global Search Result',
'pages.products.noResult': 'No product found containing "{searchText}"',
'pages.products.noProduct': 'No product found in this directory',
'pages.config.alert':
'Tips: After modifying the configuration, please be sure to click the submit button to save.',
'pages.config.testPush': 'Test Connection',
'pages.config.testPush.tips': 'Please configure complete information first',
'pages.config.testPush.success':
'Test push sent successfully, please check the corresponding software group or channel',
'pages.config.testPush.fail': 'Test push failed, please check configuration',
'pages.config.pop.voicePermissionTips':
'Tips: When enabling this feature, please ensure that the browser sound permission is enabled to avoid sound playback restrictions.',
'pages.config.pop.tips1': 'Browser is in private mode',
'pages.config.pop.tips2':
'Some browsers in private mode cannot send desktop notifications, please use normal mode to browse',
'pages.config.pop.tips3': 'Website is not https',
'pages.config.pop.tips4':
'Now most browsers enable desktop notifications only on https websites, please upgrade to https protocol and try again.',
'pages.config.pop.telegram.title': 'Telegram Bot Setup Guide',
'pages.config.pop.viewPdf': 'View PDF Tutorial',
'pages.config.pop.telegram.content1':
'Search for <b>@BotFather</b> on Telegram.',
'pages.config.pop.telegram.content2':
'Send /newbot and follow steps to get your <b>API Token</b>.',
'pages.config.pop.telegram.content3':
'Create a group/channel and add your bot as admin.',
'pages.config.pop.telegram.content4':
'Get your <b>Chat ID</b> (use bots like @userinfobot or API).',
'pages.config.pop.telegram.tips': 'Official Telegram Bot Tutorial',
'pages.config.pop.teams.title': 'Microsoft Teams Webhook Guide',
'pages.config.pop.teams.content1': 'Open Teams, go to your channel.',
'pages.config.pop.teams.content2':
'Click ... <b>(More options)</b> -> <b>Workflows (Recommended)</b>.',
'pages.config.pop.teams.content3':
'Search for "<b>Post to a channel when a webhook request is received</b>".',
'pages.config.pop.teams.content4':
'Follow steps to create your unique <b>Webhook URL</b>.',
'pages.config.pop.teams.tips': 'Official Teams Webhook Guide',
'pages.config.pop.teams.url':
'https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook',
'pages.config.pop.slack.title': 'Slack Webhook Guide',
'pages.config.pop.slack.content1': 'Go to Slack API and create a new App.',
'pages.config.pop.slack.content2':
'Enable <b>Incoming Webhooks</b> in the settings.',
'pages.config.pop.slack.content3':
'Click <b>Add New Webhook to Workspace</b> and choose a channel.',
'pages.config.pop.slack.content4': 'Copy the generated <b>Webhook URL</b>.',
'pages.config.pop.slack.tips': 'Official Slack Webhook Guide',
'pages.config.pop.lark.title': 'Lark Webhook Guide',
'pages.config.pop.lark.content1':
'Open Lark group chat, click <b>Settings</b> -> <b>Bots</b>.',
'pages.config.pop.lark.content2':
'Choose <b>Custom Bot</b> and click <b>Add</b>.',
'pages.config.pop.lark.content3':
'Name your bot and copy the <b>Webhook URL</b>.',
'pages.config.pop.lark.content4':
'(Optional) Configure IP Whitelist or Signature for security.',
'pages.config.pop.lark.tips': 'Official Lark Bot Guide',
'pages.config.pop.lark.url':
'https://www.larksuite.com/hc/en-US/articles/360048487736-use-bots-in-groups',
'pages.clone.tips1': 'Rule Operation Failed',
'pages.clone.tips2':
'Rule added, but still processing, please check rule status later.',
'pages.clone.tips3':
'Rule added, but failed to get rule detail, please check rule status later.',
'pages.clone.tips4':
'Rule added, but rule status is invalid, please check parameters and try again.',
'pages.clones.title': 'Bulk Clone',
'pages.clones.step1.title': 'Select Target',
'pages.clones.step1.source': 'Source Server',
'pages.clones.step1.target': 'Target Server',
'pages.clones.step1.sourceRules':
'Current source has {count} "{ruleType}" rules',
'pages.clones.step1.dividerText': 'Will Clone To',
'pages.clones.step1.confirm': 'Next: Preview Rules →',
'pages.clones.step1.tips': 'Please select source server first',
'pages.clones.step2.title': 'Preview Rules',
'pages.clones.step2.summary':
'Total {count} rules, will clone {cloneCount} rules to "{target}"',
'pages.clones.step2.checkAll': 'Check All',
'pages.clones.step2.cardTitle1': 'Original (Read Only)',
'pages.clones.step2.cardTitle2': 'After Cloned',
'pages.clones.step2.confirm': 'Next: Confirm Clone →',
'pages.clones.step3.title': 'Confirm Clone',
'pages.clones.step3.confirmTitle':
'About to clone {cloneCount} rules to "{target}"',
'pages.clones.step3.confirmTips':
'Please enter target server name below to confirm:',
'pages.clones.step3.confirmTips2':
'* * Enter identical server name to enable confirm button',
'pages.clones.step3.confirm': 'Start Execute Clone',
'pages.clones.step3.progress': 'Bulk Clone Progress',
'pages.clones.step3.start': 'Start Clone',
'pages.clones.step3.status1': 'Processing',
'pages.clones.step3.status2': 'Success',
'pages.clones.step3.status3': 'Failed',
'pages.clones.step3.status4': 'Warning',
'pages.clones.step3.status5': 'Pending',
'pages.clones.step3.success': 'All rules cloned successfully',
'pages.clones.step3.warning':
'All rules cloned successfully, but some rules failed to get status, please check manually',
'pages.clones.step3.error':
'Some rules failed to clone successfully, please check manually',
'pages.clones.step3.understand': 'I See',
'pages.clones.back': 'Back',
'pages.clones.backPreview': 'Back to Preview',
'pages.email.desc': 'Manage SMTP / API sending services for all companies',
'pages.email.notAssigned': 'Unassigned',
'pages.email.serviceName': 'Service Name',
'pages.email.serviceName.tips': 'Example: SendGrid Production',
'pages.email.serviceProvider': 'Service Provider',
'pages.email.assignedTo': 'Assigned To',
'pages.email.availableEmails': 'Verified Sender Emails',
'pages.email.availableEmails.tips':
'Enter verified sender emails (comma separated)',
'pages.email.status.normal': 'Active',
'pages.email.status.disabled': 'Inactive',
'pages.email.notification': 'Email Notification Config',
'pages.email.notificationEmail': 'Notification Email',
'pages.email.notificationEmail.tips':
'Email address to receive alert notifications (default is login email)',
'pages.email.emailNotification': 'Email Alerts',
'pages.email.acceptEnable': 'Receive Email Alerts',
'pages.email.acceptEnable.tips':
'Turn on to receive email alerts when rules are triggered',
'pages.email.notificationEnable': 'Enable Email Alerts',
'pages.email.notificationEnable.tips':
'When enabled, alert emails will be sent to users who have turned on email notifications',
'pages.email.notificationService': 'Assign Sending Service',
'pages.email.notificationFromName': 'Sender Name',
'pages.email.notificationFromEmail': 'Sender Email',
'pages.email.testEmail.title': 'Receive test information via email',
'pages.email.testEmail.success':
'Test email sent, please check {email} inbox.',
'pages.email.companyEmailDisabled':
'The company has not enabled or has disabled email functionality, and it cannot be enabled at this time (Can be turned off if enabled).',
'pages.error.title': 'Page Resource Loading Error',
'pages.error.subTitle':
'Network environment is unstable or system version is updated, please check network or refresh page later.',
'pages.error.subTitle2': 'Sorry, current page content rendering error.',
'pages.save': 'Save',
'pages.rules.cloneRuleWarning':
'At least two data sources must be bound to use the clone function',
'pages.voiceCheck.title': 'Guidelines for Restricted Audio Playback Handling',
'pages.voiceCheck.alertMessage':
'Voice permission restricted, click to view more →',
'pages.voiceCheck.buttonText': 'Later',
'pages.voiceCheck.buttonText2': 'Temporary Activate',
'pages.voiceCheck.alertMessage2':
'Due to browser security policy, the system cannot automatically play the alert sound.',
'pages.voiceCheck.alertMessage3':
'When a user enters a page for the first time or refreshes the page without any interaction (such as clicking or scrolling), the browser will disable sound playback. To ensure you receive alerts immediately, please manually activate or enable sound permissions.',
'pages.voiceCheck.tips': 'Temporary Solution Methods:',
'pages.voiceCheck.tips2':
'Click the "Temporary Activate" button below. The browser will record your interaction and play the alert sound.',
'pages.voiceCheck.tips3':
'Recommendation: Enable the voice permission for this site.',
'pages.voiceCheck.tips4':
'After setting, please refresh the page to ensure configuration effect.',
'pages.voiceCheck.chrome.tips':
'Click the left of the address bar <b>"Lock"</b> or <b>"Settings"</b> icon',
'pages.voiceCheck.chrome.tips2':
'Find <b>"Site settings"</b> or <b>"Permissions"</b> in the permissions list',
'pages.voiceCheck.chrome.tips3':
'Find <b>"Sound"</b> in the permissions list and set it to <b>"Allow"</b>',
'pages.voiceCheck.chrome.tips4':
'If you cannot find the sound permission in the permissions list, click <b>"More settings and permissions"</b> to view',
'pages.voiceCheck.chrome.tips5':
'Refresh the page to ensure configuration effect.',
'pages.voiceCheck.firefox.tips': 'Click <b>"Permissions"</b> icon',
'pages.voiceCheck.firefox.tips2':
'Find in the permissions list and set it to <b>"Allow audio and video"</b>',
'pages.voiceCheck.firefox.tips3':
'Refresh the page to ensure configuration effect.',
'pages.voiceCheck.safari.tips':
'Click <b>"Safari browser - This site\'s settings"</b>',
'pages.voiceCheck.safari.tips2':
'Find in the permissions list and set it to <b>"Allow all autoplay"</b>',
'pages.voiceCheck.safari.tips3':
'Refresh the page to ensure configuration effect.',
'pages.parseError.title': 'Parse Message Error',
'pages.parseError.content':
'The alert message parsing failed, please check the message format and contact the administrator or technical team if the problem persists.',
};

7
src/locales/zh_CN.ts Normal file
View File

@@ -0,0 +1,7 @@
import menu from './zh_CN/menu';
import pages from './zh_CN/pages';
export default {
...pages,
...menu,
};

56
src/locales/zh_CN/menu.ts Normal file
View File

@@ -0,0 +1,56 @@
export default {
'menu.welcome': '欢迎',
'menu.home': '首页',
'menu.login': '登录',
'menu.dashboard': '仪表板',
'menu.dashboard.desc': '查看仪表板',
'menu.rules': '规则管理',
'menu.rule': '规则',
'menu.rules.desc': '管理规则',
'menu.rules.largeTradeLots': '大额交易(手数)',
'menu.rules.largeTradeLots.desc': '监控单笔开仓手数超过设定阈值的大额交易',
'menu.rules.largeTradeUSD': '大额交易(USD)',
'menu.rules.largeTradeUSD.desc': '监控单笔开仓USD等值金额超过设定阈值的交易',
'menu.rules.liquidityTrade': 'Liquidity Trade',
'menu.rules.liquidityTrade.desc': '监控短时间内多笔同向小单的拆单行为',
'menu.rules.scalping': 'Scalping',
'menu.rules.scalping.desc': '监控持仓时间过短的超短线交易',
'menu.rules.exposureAlert': '敞口告警',
'menu.rules.exposureAlert.desc': '监控货币净敞口超限',
'menu.rules.pricingVolatility': 'Pricing & Volatility',
'menu.rules.pricingVolatility.desc': '监控行情中断和剧烈波动',
'menu.rules.pricing': '报价监控',
'menu.rules.pricing.desc': '监控行情停滞',
'menu.rules.volatility': '波动监控',
'menu.rules.volatility.desc': '监控高频剧烈行情波动',
'menu.rules.NOPLimit': 'NOP Limit',
'menu.rules.NOPLimit.desc': '监控产品净头寸超限',
'menu.rules.watchList': 'Watch List',
'menu.rules.watchList.desc': '监控重点账户的交易行为',
'menu.rules.reversePositions': 'Reverse Positions',
'menu.rules.reversePositions.desc': '监控平仓后短时间内反向开仓的翻仓行为',
'menu.rules.depositWithdrawal': 'Deposit & Withdrawal',
'menu.rules.depositWithdrawal.desc': '监控大额外部出入金',
'menu.products': '产品列表',
'menu.products.desc': '查看产品',
'menu.alert': '告警记录',
'menu.alert.desc': '查看告警',
'menu.account': '交易账户',
'menu.account.desc': '管理交易账户',
'menu.company': '公司管理',
'menu.company.desc': '管理公司',
'menu.dataSource': '数据源管理',
'menu.dataSource.desc': '管理数据源',
'menu.user': '用户管理',
'menu.user.desc': '管理用户',
'menu.role': '角色管理',
'menu.role.desc': '管理角色',
'menu.config': '全局配置',
'menu.config.desc': '管理配置',
'menu.profile': '个人信息',
'menu.emailServices': '发件服务',
'menu.emailServices.desc': '管理发件服务',
'menu.operLog': '操作日志',
'menu.operLog.desc': '查看操作日志',
};

631
src/locales/zh_CN/pages.ts Normal file
View File

@@ -0,0 +1,631 @@
export default {
'common.loading': '加载中...',
'common.content.noRules': '暂无规则',
'common.content.noData': '暂无数据',
'table.group': '所属组',
'table.operatorRecords': '操作记录',
'table.operatorAction': '操作动作',
'table.operatorTime': '操作时间',
'table.os': '操作系统',
'table.browser': '浏览器',
'table.timerange': '数据范围',
'table.volume': '手数',
'table.cmd': '交易类型',
'table.openTime': '开仓时间',
'table.profit': '盈亏',
'table.unit.datasource': '个',
'table.unit.users': '人',
'table.time': '时间',
'table.account': '交易账户',
'table.symbol': '产品',
'table.trigger': '触发值',
'table.triggerValue': '触发值',
'table.status': '状态',
'table.id': 'ID',
'table.alertId': '告警ID',
'table.accountId': '账户ID',
'table.companyId': '公司ID',
'table.dataSourceId': '数据源ID',
'table.dataSource': '数据源',
'table.dataSourceTime': '数据源时间',
'table.userId': '用户ID',
'table.roleId': '角色ID',
'table.company': '所属公司',
'table.ruleType': '规则类型',
'table.platform': '平台',
'table.detail': '详情',
'table.summary': '概要',
'table.triggerTime': '触发时间',
'table.action': '操作',
'table.currency': '币种',
'table.balance': '余额',
'table.equity': '净值',
'table.marginLevel': '保证金水平',
'table.alertCount': '告警数',
'table.companyName': '公司名称',
'table.contactEmail': '联系邮箱',
'table.dataSourceCount': '数据源',
'table.userCount': '用户数',
'table.createTime': '创建时间',
'table.name': '名称',
'table.ipAddress': 'IP地址',
'table.ruleCount': '规则数',
'table.username': '用户名',
'table.displayName': '显示名称',
'table.role': '角色',
'table.roleIdentifier': '角色标识',
'table.roleName': '角色名称',
'table.permissionLevel': '权限级别',
'table.type': '类型',
'table.permissionCount': '权限数',
'table.operator': '操作人',
'table.actionType': '动作',
'table.description': '详细描述',
'table.all': '全部',
'table.new': '待处理',
'table.viewed': '已查看',
'table.ignored': '已忽略',
'table.ignored2': '忽略',
'table.action.add': '添加',
'table.action.view': '查看',
'table.action.delete': '删除',
'table.action.other': '其他操作',
'table.action.deleteDone': '已删除',
'table.action.edit': '编辑',
'table.action.export': '导出',
'table.action.allRead': '全部标记已读',
'table.dataSource.status0': '连接中',
'table.dataSource.status1': '运行中',
'table.dataSource.status2': '连接失败',
'table.dataSource.status3': '删除中',
'table.user.status0': '停用',
'table.user.status1': '活跃',
'table.role.type0': '系统角色',
'table.role.type1': '自定义角色',
'pages.totalUserCount': '总用户数',
'pages.totalAlertCount': '总告警数',
'pages.totalCompanyCount': '总公司数',
'pages.activeCompanyCount': '活跃公司数',
'pages.totalDataSourceCount': '数据源总数',
'pages.activeDataSourceCount': '活跃数据源',
'pages.mt4DataSourceCount': 'MT4 数据源',
'pages.mt5DataSourceCount': 'MT5 数据源',
'pages.adminCount': '管理员',
'pages.operatorCount': '操作员',
'pages.readOnlyUserCount': '只读用户',
'pages.totalRoleCount': '总角色数',
'pages.systemRoleCount': '系统角色',
'pages.customRoleCount': '自定义角色',
'pages.availablePermissionList': '可用权限列表',
'pages.dashboard.todayAlertCount': '今日告警',
'pages.dashboard.activeRuleCount': '活跃规则',
'pages.dashboard.monitoringAccountCount': '告警账户数',
'pages.dashboard.alertProcessingRate': '告警处理率',
'pages.dashboard.todayTransactionCount': '今日交易',
'pages.dashboard.alertTrend': '告警趋势',
'pages.dashboard.globalView': '全局视图',
'pages.dashboard.ruleTriggerDistribution': '规则触发分布',
'pages.dashboard.latestAlert': ' 最新告警',
'pages.dashboard.platformTransactionVolume': '平台交易量',
'pages.dashboard.viewAll': '查看全部',
'pages.dashboard.recentAlerts': '最近告警',
'pages.user.roleDesc.superAdmin': '可管理全部公司、用户和数据',
'pages.user.roleDesc.companyAdmin': '可管理所属公司的用户和数据',
'pages.user.roleDesc.companyOperator': '配置分配数据源的规则',
'pages.user.roleDesc.companyViewer': '仅查看告警记录',
'pages.user.roleDesc.header': '角色权限说明',
'pages.role.system.superAdmin': '超级管理员',
'pages.role.system.companyAdmin': '公司管理员',
'pages.role.system.companyOperator': '公司用户',
'pages.role.system.companyViewer': '只读用户',
'pages.tips.emptyIsAll': '留空表示全部',
'pages.account.pop.title': '账户详情',
'pages.alert.pop.title': '告警追踪详情',
'pages.alert.pop.title2': '基本信息',
'pages.alert.pop.title3': '触发规则快照',
'pages.alert.pop.title4': '关联交易记录',
'pages.alert.newAlertTips': '你有新的告警,点击"重置"刷新数据后查看',
'pages.rules.seconds': '秒',
'pages.rules.lots': '手',
'pages.rules.triggerValue': '手数阈值',
'pages.rules.triggerValueUSD': 'USD 阈值',
'pages.rules.monitoredSymbols': '监控品种',
'pages.rules.monitoredGroups': '监控组',
'pages.rules.allGroups': '全部组',
'pages.rules.allSymbols': '全部产品',
'pages.rules.allAssets': '全部资产',
'pages.rules.trigger': '触发',
'pages.rules.triggeredCount': '次数',
'pages.rules.disable': '禁用',
'pages.rules.enable': '启用',
'pages.rules.status0': '待生效',
'pages.rules.status1': '运行中',
'pages.rules.status2': '已禁用',
'pages.rules.status3': '编辑生效中',
'pages.rules.status4': '删除生效中',
'pages.rules.status5': '删除成功',
'pages.rules.reportInterval': '上报间隔',
'pages.rules.ruleName': '规则名称',
'pages.rules.clone': '克隆',
'pages.rules.cloneConfirm': '确认克隆',
'pages.rules.cloneRule': '克隆规则',
'pages.rules.originalRule': '原始规则(只读)',
'pages.rules.cloneRulePreview': '克隆预览(可编辑)',
'pages.rule3.timeWindow': '时间窗口',
'pages.rule3.minOrderCount': '最小订单数',
'pages.rule3.minOrderCount.tips': '单',
'pages.rule3.totalLotsThreshold': '总手数阈值',
'pages.rule3.aggregationLogic': '聚合逻辑',
'pages.rule3.option1': '按虚拟大类聚合',
'pages.rule3.option2': '按单个品种聚合',
'form.rule3.tips':
'提示系统会自动区分BUY和SELL方向相同方向的订单才会累加手数。例如60秒内开5张BUY单和3张SELL单不会累加为8张。',
'pages.rule4.item1': '持仓时间阈值',
'pages.rule4.item2': '最小平仓获利',
'pages.rule4.item3': '最小平仓手数',
'pages.rule4.item4': '最小平仓USD价值',
'form.rule4.tips': '提示:监控持仓时间过短且获利超过阈值的超短线交易。',
'pages.rule5.item1': '目标货币',
'pages.rule5.item2': '敞口阈值',
'pages.rule5.item3': '时间间隔',
'pages.rule5.item4': '最大提醒次数',
'form.rule5.tips': '提示:实时监控各货币对的净敞口,防止头寸过大。',
'pages.rule5_1.item1': '监控资产',
'pages.rule5_1.item2': '上限阈值',
'pages.rule5_1.item4': '下限阈值',
'pages.rule5_1.item5': '折算货币',
'pages.rule5_1.validateError2': '上限值不能小于下限值',
'pages.rule5_1.validateError4': '下限值不能大于上限值',
// 'pages.rule6.item1': '停价阈值',
// 'pages.rule6.item2': '波动阈值',
// 'pages.rule6.item3': '波动模式',
// 'pages.rule6.option1': '点数 (Points)',
// 'pages.rule6.option2': '百分比 (%)',
// 'form.rule6.tips': '提示:监控行情报价中断和短时间内的异常剧烈波动。',
'pages.rule6_1.item1': '报价停滞时间',
'form.rule6_1.tips': '提示:监控行情报价中断。',
'pages.rule11.item1': '波动模式',
'pages.rule11.option1': '点数 (Points)',
'pages.rule11.option2': '百分比 (%)',
'pages.rule11.item2': '时间窗口',
'pages.rule11.item3': '最大波幅',
'form.rule11.tips': '提示:监控异常高频剧烈行情波动。',
'pages.rule7.item1': '平台类型',
'pages.rule7.option1': 'MT4 (系数: 100)',
'pages.rule7.option2': 'MT5 (系数: 10000)',
'pages.rule7.item2': 'NOP 阈值',
'pages.rule7.item3': '计算频率',
'pages.rule7.item4': '报警冷却时间',
'form.rule7.tips': '提示监控单一产品的敞口限额支持MT5折算。',
'pages.rule8.item1': '监控账户',
'pages.rule8.item1.tips': 'ID, 逗号分隔',
'pages.rule8.item2': '监控动作',
'pages.rule8.option1': '开仓',
'pages.rule8.option2': '挂单',
'pages.rule8.item3': '最小手数限制',
'form.rule8.tips': '提示:对重点监控名单中的账户进行的任何交易行为实时告警。',
'pages.rule9.item1': '最大间隔',
'pages.rule9.item2': '最小手数',
'pages.rule9.item3': '最小反向开仓USD价值',
'form.rule9.tips': '提示:监控平仓后短时间内反向开仓的翻仓/反向刷单行为。',
'pages.rule10.item1': '入金阈值',
'pages.rule10.item2': '出金阈值',
'pages.rule10.item3': '识别关键词',
'pages.rule10.item3.tips': '逗号分隔',
'form.rule10.tips': '提示:监控账户大额出入金,通过关键词识别入金类型。',
'form.rules.header': '当前规则含义:',
'form.rules.header.content1':
'如果开仓手数 ≥ <yellow>{lots}</yellow>,针对品种 <green>{symbols}</green>,触发告警。',
'form.rules.header.content2':
'如果开仓金额 ≥ <yellow>{amount}</yellow>,针对品种 <green>{symbols}</green>,触发告警。',
'form.rules.header.content3':
'在 <yellow>{seconds}</yellow> 秒内,如果订单数 ≥ <yellow>{orderCount}</yellow> 且总手数 ≥ <yellow>{totalLots}</yellow>,针对 <green>{symbols}</green> 按 <yellow>{aggregationLogic}</yellow> 监控,触发告警。',
'form.rules.header.content4':
'平仓后(含部分平仓),<blue>持仓时间 < </blue> <yellow>{seconds}</yellow> <blue>秒</blue> 且 <blue>平仓手数 ≥ </blue> <yellow>{lots}</yellow> 且 <blue>平仓盈利 ≥ </blue> <yellow>{profitValue}</yellow> 的 <green>{symbols}</green> 交易触发告警。',
'form.rules.header.content5':
'如果 <yellow>{currency}</yellow> 的敞口 ≥ <yellow>{exposureValue}</yellow>,每隔 <yellow>{interval}</yellow> 秒,触发告警。',
'form.rules.header.content5_1':
'如果 <green>{assets}</green> 的敞口 ≥ <yellow>$ {upperThreshold}</yellow> 或 ≤ <yellow>$ {lowerThreshold}</yellow>,每隔 <yellow>{interval}</yellow> 秒,触发告警。',
'form.rules.header.content6':
'针对 <green>{symbols}</green>,如果停止报价时长 ≥ <yellow>{stopTime}</yellow> 秒,或价格波动 ≥ <yellow>{volatility}</yellow> ({volatilityUnit}),每隔 <yellow>{interval}</yellow> 秒,触发告警。',
'form.rules.header.content6_1':
'针对 <green>{symbols}</green>,如果停止报价时长 ≥ <yellow>{stopTime}</yellow> 秒,触发告警。',
'form.rules.header.content11':
'针对 <green>{symbols}</green>,如果价格波动 ≥ <yellow>{volatility}</yellow> (<yellow>{volatilityUnit}</yellow> 模式),时间窗口:<yellow>{timeWindow}</yellow>,触发告警。',
'form.rules.header.content7':
'如果 <green>{symbols}</green> 的净头寸(NOP) ≥ <yellow>{nopLimit}</yellow>,触发告警。',
'form.rules.header.content8':
'监控账号 <yellow>{tradeAccounts}</yellow> 的 <yellow>{action}</yellow> 动作,如果单笔手数 ≥ <yellow>{lots}</yellow>,触发告警。',
'form.rules.header.content9':
'平仓后 <yellow>{seconds}</yellow> 秒内,反向开仓手数 ≥ <yellow>{lots}</yellow> 或金额 ≥ <yellow>$ {usdValue}</yellow>,监控品种 <green>{symbols}</green>,触发告警。',
'form.rules.header.content10':
'监控单笔入金 ≥ <yellow>{depositValue}</yellow> 或出金 ≥ <yellow>{withdrawValue}</yellow> (含关键字: <yellow>{keywords}</yellow>),触发告警。',
'form.rule1.ignoreSimulatedAccount': '忽略模拟账户',
'form.rule1.tips': '提示:此规则将对单笔开仓手数超过阈值的订单进行实时监控。',
'form.rule1.tips2': '点击输入框搜索,或点击分类标题一键全选。',
'form.rule2.keyword': '美分账户组关键词',
'form.rule2.keyword.placeholder': '例如: *CENT*,*MICRO*',
'form.rule2.tips': '提示监控单笔开仓USD等值金额超过设定阈值的交易。',
'form.selectOrSearch': '请选择或搜索',
'form.required': '该项是必填项',
'form.password': '密码',
'form.example': '例如',
'form.range': '范围',
'form.placeholder.ipAddress': '请输入正确的 IPv4 地址 (例如: 192.168.1.1)',
'form.dataSource.name': '数据源名称',
'form.dataSource.type': '平台类型',
'form.dataSource.connectionConfig': '连接配置',
'form.dataSource.ipAddress': 'IP 地址',
'form.dataSource.port': '端口号',
'form.dataSource.tradeAccount': '账号',
'form.user.title': '用户',
'form.user.dataSourceIds': '绑定数据源',
'form.user.dataSourceEmptyTips': '可选数据源为空,如需绑定,请先去添加',
'form.user.displayName': '显示名称',
'form.user.email': '邮箱',
'form.email.placeholder': '请输入合法的邮箱地址',
'form.password.repeatPassword': '确认密码',
'form.password.passwordNotMatch': '两次输入的密码不一致!',
'form.password.placeholder': '密码至少6位',
'form.password.tips':
' 提示(非强制):使用字母、数字和符号组合能让密码更安全。',
'form.password.strength': '强度',
'form.password.level0': '极弱',
'form.password.level1': '弱',
'form.password.level2': '中',
'form.password.level3': '强',
'form.role.title': '角色',
'form.role.preview': '预览',
'form.role.roleKey': '角色标识',
'form.role.roleKey.placeholder':
'如risk_analyst只能使用英文、数字和下划线',
'form.role.roleKey.placeholder2': '只能使用英文、数字和下划线',
'form.role.roleName': '角色名称',
'form.role.roleName.placeholder': '如:风险分析师',
'form.role.level': '权限级别',
'form.role.level.placeholder':
'1-{level},,数值越大权限越高,可以修改低权限用户信息',
'form.role.placeholder2': '系统角色权限级别不可修改',
'form.role.badgeColor': '徽章颜色',
'form.role.menuIds': '绑定权限(菜单)',
'form.config.timezone': '时区设置',
'form.config.timezone.title': '默认时区',
'form.config.dataSet': '数据设置',
'form.config.dataSet.backDays': '告警保留天数',
'form.config.dataSet.backDays.tips': '超过此天数的告警将被自动归档',
'form.config.dataSet.refresh': '自动刷新间隔(秒)',
'form.config.notification': '通知设置',
'form.config.emailNotification': '邮件通知',
'form.config.emailNotification.tips': '新告警时发送邮件通知',
'form.config.soundNotification': '声音提醒',
'form.config.soundNotification.tips': '高风险告警时播放提示音',
'form.config.frontNotice': '前端推送',
'form.config.frontNotice.tips': '是否开启前端推送及相关设置',
'form.config.desktopNotification': '桌面推送',
'form.config.desktopNotification.notSupport': '浏览器不支持桌面通知',
'form.config.desktopNotification.tips': '浏览器桌面通知',
'form.config.desktopNotification.tips2': '通知权限无法开启',
'form.config.desktopNoticeRefuseTips': '通知权限被拒绝',
'form.config.desktopNoticeRefuseTips2':
'您已拒绝桌面通知授权,无法使用桌面通知功能,该授权一旦拒绝,无法重新弹出。如需启用,需手动在浏览器设置中授权或重置。',
'form.config.noticeOnButNotWorkTips':
'如已开启桌面通知权限却未收到通知,请做如下检查',
'form.config.noticeOnButNotWorkTips2':
'系统处于"勿扰模式"或"专注模式"(最常见)',
'form.config.noticeOnButNotWorkTips3': '设置 → 系统 → 通知',
'form.config.noticeOnButNotWorkTips4':
'确保"获取来自应用和其他发送者的通知"已开启',
'form.config.noticeOnButNotWorkTips5':
'在列表中找到您使用的浏览器,确保其开关也是开启状态',
'form.config.noticeOnButNotWorkTips6': '检查"专注助手"是否关闭',
'form.config.noticeOnButNotWorkTips7': '系统设置 → 通知 → 专注模式',
'form.config.noticeOnButNotWorkTips8': '确保"勿扰模式"关闭',
'form.config.noticeOnButNotWorkTips9':
'在左侧列表中找到您使用的浏览器,确保"允许通知"已勾选',
'form.config.webhook': 'Webhook 告警配置',
'form.config.webhook.telegram.title': 'Telegram 通知',
'form.config.webhook.telegramBotToken': '机器人 Token',
'form.config.webhook.telegramBotToken.tips':
'从 @BotFather 获取的 API Token。',
'form.config.webhook.telegramChatId': '会话 ID (Chat ID)',
'form.config.webhook.telegramChatId.tips': '将机器人加入群组后获取的 ID。',
'form.config.webhook.teams.title': 'Teams 通知',
'form.config.webhook.teams.tips':
'在此输入 Microsoft Teams 的 Webhook 地址。',
'form.config.webhook.teams': 'Teams Webhook',
'form.config.webhook.slack.title': 'Slack 通知',
'form.config.webhook.slack.tips': '在此输入 Slack 的 Webhook 地址。',
'form.config.webhook.slack': 'Slack Webhook',
'form.config.webhook.lark.title': 'Lark 通知',
'form.config.webhook.lark.tips': '在此输入Lark机器人的 Webhook 地址。',
'form.config.webhook.lark': 'Lark Webhook',
'form.config.updateSuccess': '配置更新成功',
'form.config.inputURLTips': '请输入正确的URL格式',
'pages.layouts.userLayout.title':
'RiskGuard 是一款专注于风险评估、监控和报告的软件产品',
'pages.login.failure': '登录失败,请稍后重试!',
'pages.login.success': '登录成功!',
'pages.login.username': '邮箱',
'pages.login.username.required': '用户名是必填项!',
'pages.login.password': '密码',
'pages.login.password.required': '密码是必填项!',
'pages.login.submit': '登录',
'pages.404.subTitle': '抱歉,您访问的页面不存在。',
'pages.404.buttonText': '返回首页',
'pages.500.title': '服务异常',
'pages.500.subTitle': '获取菜单或权限信息失败,请稍后尝试刷新页面。',
'pages.refresh': '刷新页面',
'pages.logout': '退出登录',
'pages.profile': '个人中心',
'pages.profile.basicInfo': '基本信息',
'pages.profile.changePassword': '修改密码',
'pages.systemDirectly': '系统直属',
'pages.confirmModify': '确认修改',
'pages.oldPassword': '原密码',
'pages.oldPassword.tips': '请输当前登录密码',
'pages.newPassword': '新密码',
'pages.confirmPassword': '确认新密码',
'pages.changePasswordSuccess': '修改成功,即将跳转重新登录',
'pages.changePassTips':
'您当前使用的是系统初始密码。为了您的账户隐私与操作安全,建议您现在前往个人中心修改密码。',
'pages.goLogin': '去登录',
'pages.laterHandle': '稍后处理',
'pages.loginFirst': '请先登录',
'pages.notice.title': '通知服务',
'pages.notice.retryMaxTips': '重试次数已达最大次数,连接失败',
'pages.notice.onError': '连接已中断,请检查网络后手动重试',
'pages.notice.status.processing': '正在连接中... (重试:{retryCount})',
'pages.notice.status.success': '页面通知服务在线',
'pages.notice.status.error': '页面通知服务连接失败, 请检查网络后后手动重试',
'pages.notice.status.closed': '页面通知服务已断开',
'pages.notice.status.default': '页面通知服务未连接',
'pages.notice.status.replaced': '其他端已连接, 如需继续使用请重新连接',
'pages.notice.status.processing.title': '连接中',
'pages.notice.status.success.title': '在线',
'pages.notice.status.error.title': '连接失败',
'pages.notice.status.closed.title': '已断开',
'pages.notice.status.default.title': '未连接',
'pages.notice.status.replaced.title': '已替换',
'pages.notice.button.reconnect': '重连',
'pages.tips.operationSuccess': '操作成功',
'pages.tips.operationFailed': '操作失败',
'notice.title': '告警通知',
'notice.title1': '告警类型',
'notice.title2': '您有{count}条告警通知',
'pages.model.delete': '删除任务',
'pages.model.delete.content': '该操作不可逆, 确定删除吗?',
'pages.model.disable': '禁用用户',
'pages.model.disable.content': '禁用后, 该用户将不可登录系统, 确定禁用吗?',
'pages.model.confirm': '确认',
'pages.model.cancel': '取消',
'pages.model.allRead.content': '确认将所有告警通知标记为已读吗?',
'pages.export.noData': '当前暂无可导出的数据',
'pages.export.exporting': '正在导出,请稍候...',
'pages.export.exportSuccess': '导出成功',
'pages.export.exportFailed': '导出失败,请重试',
'pages.products.noBindDataSource':
'当前用户暂无绑定的数据源,请先绑定或联系公司管理员进行绑定后查看',
'pages.products.noBindDataSource.superadmin': '暂无数据源,请先添加',
'pages.products.bindDataSource': '去绑定',
'pages.products.goto': '去处理',
'pages.products.directory': '产品目录',
'pages.products.directory.tips': '请先选择目录或开始搜索',
'pages.products.search': '全局搜索产品名称',
'pages.products.searchResult': '全局搜索结果',
'pages.products.noResult': '未找到包含 "{searchText}" 的产品',
'pages.products.noProduct': '该目录下暂无产品',
'pages.config.alert': '修改配置后请务必点击提交按钮保存',
'pages.config.testPush': '测试推送',
'pages.config.testPush.tips': '请先配置好完整信息',
'pages.config.testPush.success': '已发送测试推送, 请查看对应软件的群组或频道',
'pages.config.testPush.fail': '测试推送失败, 请检查配置',
'pages.config.pop.viewPdf': '查看图文教程',
'pages.config.pop.voicePermissionTips':
'温馨提示: 开启此功能时, 请务必将浏览器声音权限开启, 以摆脱浏览器声音播放限制。点此查看权限设置',
'pages.config.pop.tips1': '处于浏览器无痕模式',
'pages.config.pop.tips2':
'部分浏览器无痕模式下无法发送桌面通知, 请使用普通模式浏览',
'pages.config.pop.tips3': '网站不是https协议',
'pages.config.pop.tips4':
'现在主流浏览器启用桌面通知需要网站是https协议, 请升级到https协议后重试',
'pages.config.pop.telegram.title': 'Telegram 机器人配置指南',
'pages.config.pop.telegram.content1':
'在 Telegram 中搜索 <b>@BotFather</b>。',
'pages.config.pop.telegram.content2':
'发送 /newbot 指令并按提示获取 <b>API Token</b>。',
'pages.config.pop.telegram.content3':
'创建群组或频道,并将您的机器人添加为管理员。',
'pages.config.pop.telegram.content4':
'获取 <b>Chat ID</b> (可通过 @userinfobot 或 API 获取)。',
'pages.config.pop.telegram.tips': 'Telegram 官方机器人教程',
'pages.config.pop.teams.title': 'Microsoft Teams Webhook 配置指南',
'pages.config.pop.teams.content1': '打开 Teams进入目标频道。',
'pages.config.pop.teams.content2':
'点击 <b>... (更多)</b> -> <b>工作流 (推荐)</b>。',
'pages.config.pop.teams.content3':
'搜索 <b>"在接收到 Webhook 请求时发布到频道"</b>。',
'pages.config.pop.teams.content4':
'按提示创建并获取唯一的 <b>Webhook URL</b>。',
'pages.config.pop.teams.tips': 'Teams Webhook 官方配置指南',
'pages.config.pop.teams.url':
'https://learn.microsoft.com/zh-cn/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook',
'pages.config.pop.slack.title': 'Slack Webhook 配置指南',
'pages.config.pop.slack.content1': '进入 Slack API 界面并创建新 App。',
'pages.config.pop.slack.content2': '在设置中开启 <b>Incoming Webhooks</b>。',
'pages.config.pop.slack.content3':
'点击 <b>Add New Webhook to Workspace</b> 并选择接收频道。',
'pages.config.pop.slack.content4': '复制生成的 <b>Webhook URL</b>。',
'pages.config.pop.slack.tips': 'Slack Webhook 官方说明',
'pages.config.pop.lark.title': 'Lark Webhook 配置指南',
'pages.config.pop.lark.content1':
'打开Lark群聊点击 <b>设置</b> -> <b>群机器人</b>。',
'pages.config.pop.lark.content2':
'点击 <b>添加机器人</b> -> <b>自定义机器人</b>。',
'pages.config.pop.lark.content3':
'设置机器人名称,并复制生成的 <b>Webhook 地址</b>。',
'pages.config.pop.lark.content4':
'(可选) 为了安全,建议配置 IP 白名单或签名校验。',
'pages.config.pop.lark.tips': 'Lark机器人官方指南',
'pages.config.pop.lark.url':
'https://www.larksuite.com/hc/zh-CN/articles/360048487736-%E5%9C%A8%E7%BE%A4%E7%BB%84%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%9C%BA%E5%99%A8%E4%BA%BA',
'pages.clone.tips1': '规则操作失败',
'pages.clone.tips2': '规则已添加, 但仍在处理中, 请稍后手动查看规则状态。',
'pages.clone.tips3':
'规则已添加, 但获取规则详情失败, 请稍后手动查看规则状态。',
'pages.clone.tips4': '规则已添加, 但状态有误, 请检查参数后重试。',
'pages.clones.title': '批量克隆',
'pages.clones.step1.title': '选择目标',
'pages.clones.step1.source': '来源服务器',
'pages.clones.step1.target': '目标服务器',
'pages.clones.step1.sourceRules': '当前源下有 {count} 条「{ruleType}」规则',
'pages.clones.step1.dividerText': '将克隆至',
'pages.clones.step1.confirm': '下一步:预览规则 →',
'pages.clones.step1.tips': '请先选择源服务器',
'pages.clones.step2.title': '预览规则',
'pages.clones.step2.summary':
'总计 {count} 条规则, 将克隆 {cloneCount} 条规则至 "{target}"',
'pages.clones.step2.checkAll': '全选',
'pages.clones.step2.cardTitle1': '原始(只读)',
'pages.clones.step2.cardTitle2': '克隆后',
'pages.clones.step2.confirm': '下一步:确认执行 →',
'pages.clones.step3.title': '确认执行',
'pages.clones.step3.confirmTitle':
'即将克隆 {cloneCount} 条规则至 "{target}"',
'pages.clones.step3.confirmTips': '请输入下方的目标服务器名称以确认:',
'pages.clones.step3.confirmTips2': '* * 输入目标服务器名称以激活确认按钮',
'pages.clones.step3.confirm': '开始执行克隆',
'pages.clones.step3.progress': '批量克隆进度',
'pages.clones.step3.start': '开始克隆',
'pages.clones.step3.status1': '处理中',
'pages.clones.step3.status2': '成功',
'pages.clones.step3.status3': '失败',
'pages.clones.step3.status4': '警告',
'pages.clones.step3.status5': '等待中',
'pages.clones.step3.success': '所有规则克隆成功',
'pages.clones.step3.warning':
'规则已全部克隆, 但部分规则状态获取失败, 请手动查看处理',
'pages.clones.step3.error': '部分规则克隆失败, 请手动处理',
'pages.clones.step3.understand': '已了解',
'pages.clones.back': '返回',
'pages.clones.backPreview': '返回预览',
'pages.email.desc': '管理所有公司的 SMTP / API 发件渠道',
'pages.email.serviceName': '服务名称',
'pages.email.notAssigned': '尚未分配',
'pages.email.serviceName.tips': '如SendGrid 生产环境',
'pages.email.serviceProvider': '服务商',
'pages.email.assignedTo': '已分配给',
'pages.email.availableEmails': '可用发件邮箱',
'pages.email.availableEmails.tips': '在服务商已验证的邮箱,多个用逗号分隔',
'pages.email.status.normal': '正常',
'pages.email.status.disabled': '停用',
'pages.email.notification': '邮件通知配置',
'pages.email.notificationEmail': '通知邮箱',
'pages.email.notificationEmail.tips':
'用于接收告警邮件的邮箱地址(默认同登录邮箱)',
'pages.email.emailNotification': '邮件告警',
'pages.email.acceptEnable': '接收邮件告警',
'pages.email.acceptEnable.tips': '开启后,规则触发时将向通知邮箱发送告警邮件',
'pages.email.notificationEnable': '开启邮件告警',
'pages.email.notificationEnable.tips':
'开启后,本公司中已开启邮件通知的用户将收到告警邮件',
'pages.email.notificationService': '分配发件服务',
'pages.email.notificationFromName': '发件人名称',
'pages.email.notificationFromEmail': '发件邮箱',
'pages.email.testEmail.title': '接收测试信息的邮件',
'pages.email.testEmail.success': '测试邮件已发送,请检查{email}收件箱。',
'pages.email.companyEmailDisabled':
'所属公司未开启/已禁用邮件功能,暂无法开启 (已开启的可关闭)',
'pages.error.title': '页面资源加载错误',
'pages.error.subTitle':
'网络环境不稳定或系统版本更新,导致部分资源加载失败, 请检查网络或稍后刷新页面重试。',
'pages.error.subTitle2': '抱歉,当前页面内容渲染时发生了错误。',
'pages.save': '保存',
'pages.rules.cloneRuleWarning': '至少需要绑定两个数据源才能使用克隆功能',
'pages.voiceCheck.title': '播放声音受限处理指引',
'pages.voiceCheck.alertMessage': '检测到播放声音受限, 点击此查看解决方案',
'pages.voiceCheck.buttonText': '以后再说',
'pages.voiceCheck.buttonText2': '临时激活声音',
'pages.voiceCheck.alertMessage2':
'由于浏览器安全策略限制,系统无法自动播放告警音。',
'pages.voiceCheck.alertMessage3':
'第一次进入页面或刷新页面后用户没有交互(如点击、滚动等), 浏览器会禁止播放声音。 为了确保您能第一时间收到告警,请手动激活或开启声音权限。',
'pages.voiceCheck.tips': '临时解决方法:',
'pages.voiceCheck.tips2':
'点击下方的"临时激活声音"按钮。浏览器会记录您的本次交互,随后系统即可正常发出声音, 但刷新页面或页面被浏览器回收重新加载后会重置。',
'pages.voiceCheck.tips3': '开启本站声音权限指引 (推荐)',
'pages.voiceCheck.tips4': '设置完成后,请刷新页面以确保配置生效。',
'pages.voiceCheck.chrome.tips':
'点击地址栏左侧的 <b>“锁头”</b>或<b>“设置”</b> 图标',
'pages.voiceCheck.chrome.tips2':
'找到 <b>“网站设置”</b> 或 <b>“权限”</b> 相关',
'pages.voiceCheck.chrome.tips3':
'在权限列表中找到 <b>“声音”</b>,设置为<b>“允许”</b>',
'pages.voiceCheck.chrome.tips4':
'如未找到声音权限, 则点击<b>“更多设置和权限”</b>查看',
'pages.voiceCheck.chrome.tips5': '刷新页面即可生效',
'pages.voiceCheck.firefox.tips':
'点击地址栏左侧的 <b>“权限”</b>图标(类似播放按钮或锁头)',
'pages.voiceCheck.firefox.tips2':
'在“自动播放”设置中选择 <b>“允许音频和视频”</b>',
'pages.voiceCheck.firefox.tips3': '3. 刷新页面即可生效',
'pages.voiceCheck.safari.tips':
'在顶部菜单栏选择 <b>Safari 浏览器 - 此网站的设置</b>',
'pages.voiceCheck.safari.tips2':
'在“自动播放”下拉菜单中选择 <b>“允许全部自动播放”</b>',
'pages.voiceCheck.safari.tips3': '3. 刷新页面即可生效',
'pages.parseError.title': '解析消息出错',
'pages.parseError.content':
'该告警消息解析出错, 可能是消息格式有误, 请关注后续消息, 如问题持续存在, 请上报管理员或技术团队。',
};