国际化

This commit is contained in:
wb-dxy672209 2022-12-23 14:40:29 +08:00
parent 556531ab37
commit 2e0eb0c215
15 changed files with 440 additions and 114 deletions

View File

@ -5,6 +5,7 @@ const Settings = {
contentWidth: 'Fluid', contentWidth: 'Fluid',
fixedHeader: true, fixedHeader: true,
fixSiderbar: true, fixSiderbar: true,
// title: 'System Operation&Maintenance',
title: '系统运维平台', title: '系统运维平台',
logo: null, logo: null,
footerLink: { footerLink: {

View File

@ -1,25 +1,9 @@
{ {
"version":1.0, "version":1.0,
"folder": { "folder": {
"menu.diagnose.memory": "内存诊断中心",
"menu.diagnose.storage": "存储诊断中心",
"menu.diagnose.net": "网络诊断中心",
"menu.diagnose.cpu": "调度诊断中心",
"menu.diagnose.custom": "自定义诊断中心"
}, },
"dashboard": { "dashboard": {
"menu.diagnose.memory.memgraph": "内存大盘",
"menu.diagnose.memory.filecache": "Cache分析",
"menu.diagnose.memory.oomcheck": "OOM诊断",
"menu.diagnose.cpu.schedmoni": "调度抖动诊断",
"menu.diagnose.cpu.loadtask": "系统负载诊断",
"menu.diagnose.storage.iolatency": "IO时延分析",
"menu.diagnose.storage.iofsstat": "IO流量分析",
"menu.diagnose.storage.iohang": "IO HANG诊断",
"menu.diagnose.custom.command": "命令诊断",
"menu.diagnose.net.packetdrop": "丢包诊断",
"menu.diagnose.net.jitter": "抖动诊断",
"menu.diagnose.net.retran": "重传诊断",
"menu.diagnose.net.pingtrace": "时延诊断"
} }
} }

View File

@ -1,7 +1,7 @@
import React, { useCallback } from 'react'; import React, { useCallback } from 'react';
import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons';
import { Avatar, Menu, Spin } from 'antd'; import { Avatar, Menu, Spin, Button } from 'antd';
import { history, useModel } from 'umi'; import { history, useModel, FormattedMessage, setLocale, getLocale } from 'umi';
import { stringify } from 'querystring'; import { stringify } from 'querystring';
import HeaderDropdown from '../HeaderDropdown'; import HeaderDropdown from '../HeaderDropdown';
import styles from './index.less'; import styles from './index.less';
@ -85,13 +85,38 @@ const AvatarDropdown = ({ menu }) => {
</Menu.Item> </Menu.Item>
</Menu> </Menu>
); );
const changLang = () => {
const locale = getLocale();
console.log(locale);
if (!locale || locale === 'zh-CN') {
setLocale('en-US');
} else {
setLocale('zh-CN');
}
};
return ( return (
<HeaderDropdown overlay={menuHeaderDropdown}> <>
<span className={`${styles.action} ${styles.account}`}> <div style={{ float: 'left', }}>
<Avatar size="small" className={styles.avatar} src={currentUser.avatar} alt="avatar" /> <Button
<span className={`${styles.name} anticon`}>{currentUser.username}</span> size="small"
</span> // ghost={theme === 'dark'}
</HeaderDropdown> style={{
margin: '0 8px',
}}
onClick={() => {
changLang();
}}
>
<FormattedMessage id="pages.language" defaultMessage="中文" />
</Button>
</div>
<HeaderDropdown overlay={menuHeaderDropdown}>
<span className={`${styles.action} ${styles.account}`}>
<Avatar size="small" className={styles.avatar} src={currentUser.avatar} alt="avatar" />
<span className={`${styles.name} anticon`}>{currentUser.username}</span>
</span>
</HeaderDropdown>
</>
); );
}; };

View File

@ -6,7 +6,7 @@ import pwa from './en-US/pwa';
import settingDrawer from './en-US/settingDrawer'; import settingDrawer from './en-US/settingDrawer';
import settings from './en-US/settings'; import settings from './en-US/settings';
export default { export default {
'navBar.lang': 'Languages', 'navBar.lang': 'English',
'layout.user.link.help': 'Help', 'layout.user.link.help': 'Help',
'layout.user.link.privacy': 'Privacy', 'layout.user.link.privacy': 'Privacy',
'layout.user.link.terms': 'Terms', 'layout.user.link.terms': 'Terms',

View File

@ -1,5 +1,22 @@
export default { export default {
// 'component.tagSelect.expand': 'Expand',
// 'component.tagSelect.collapse': 'Collapse',
// 'component.tagSelect.all': 'All',
'component.tagSelect.expand': 'Expand', 'component.tagSelect.expand': 'Expand',
'component.tagSelect.collapse': 'Collapse', 'component.tagSelect.collapse': 'Collapse',
'component.tagSelect.all': 'All', 'component.tagSelect.all': 'All',
'component.ListCard.needed_to_repair': 'Needed To Repair',
'component.ListCard.high_needed_to_repair': 'High Needed To Repair',
'component.ListCard.hosts_with_vul': 'Hosts With Vul',
'component.ListCard.today_repaired': 'Today Repaired',
'component.ListCard.cumulate_repaired': 'Cumulate Repaired',
'component.ListCard.latest_scan_time': 'Latest Scan Time',
'component.ListCard.scan': 'Scan',
'component.ListCard.setting': 'Setting',
'component.ListCard.scanning': 'Scanning',
'component.ListCard.success': 'Success',
'component.ListCard.failed': 'Failed',
'component.ListCard.scan_recent': 'Data was recently updated and no need to update again',
'component.DBModal.create': 'Create'
}; };

View File

@ -1,5 +1,74 @@
export default { export default {
'menu.welcome': 'Welcome', // 'menu.welcome': 'Welcome',
// 'menu.more-blocks': 'More Blocks',
// 'menu.home': 'Home',
// 'menu.admin': 'Admin',
// 'menu.admin.sub-page': 'Sub-Page',
// 'menu.login': 'Login',
// 'menu.register': 'Register',
// 'menu.register-result': 'Register Result',
// 'menu.dashboard': 'Dashboard',
// 'menu.dashboard.analysis': 'Analysis',
// 'menu.dashboard.monitor': 'Monitor',
// 'menu.dashboard.workplace': 'Workplace',
// 'menu.exception.403': '403',
// 'menu.exception.404': '404',
// 'menu.exception.500': '500',
// 'menu.form': 'Form',
// 'menu.form.basic-form': 'Basic Form',
// 'menu.form.step-form': 'Step Form',
// 'menu.form.step-form.info': 'Step Form(write transfer information)',
// 'menu.form.step-form.confirm': 'Step Form(confirm transfer information)',
// 'menu.form.step-form.result': 'Step Form(finished)',
// 'menu.form.advanced-form': 'Advanced Form',
// 'menu.list': 'List',
// 'menu.list.table-list': 'Search Table',
// 'menu.list.basic-list': 'Basic List',
// 'menu.list.card-list': 'Card List',
// 'menu.list.search-list': 'Search List',
// 'menu.list.search-list.articles': 'Search List(articles)',
// 'menu.list.search-list.projects': 'Search List(projects)',
// 'menu.list.search-list.applications': 'Search List(applications)',
// 'menu.profile': 'Profile',
// 'menu.profile.basic': 'Basic Profile',
// 'menu.profile.advanced': 'Advanced Profile',
// 'menu.result': 'Result',
// 'menu.result.success': 'Success',
// 'menu.result.fail': 'Fail',
// 'menu.exception': 'Exception',
// 'menu.exception.not-permission': '403',
// 'menu.exception.not-find': '404',
// 'menu.exception.server-error': '500',
// 'menu.exception.trigger': 'Trigger',
// 'menu.account': 'Account',
// 'menu.account.center': 'Account Center',
// 'menu.account.settings': 'Account Settings',
// 'menu.account.trigger': 'Trigger Error',
// 'menu.account.logout': 'Logout',
// 'menu.editor': 'Graphic Editor',
// 'menu.editor.flow': 'Flow Editor',
// 'menu.editor.mind': 'Mind Editor',
// 'menu.editor.koni': 'Koni Editor',
'menu.welcome': 'Home',
'menu.host': 'Host',
'menu.host.list': 'List',
'menu.host.cluster': 'Cluster',
'menu.host.terminal': 'Terminal',
'menu.migrate': 'Migrate',
'menu.migrate.implement': 'Implement',
'menu.migrate.assess': 'Assess',
'menu.monitor': 'Monitor',
'menu.monitor.dashboard': 'Dashboard',
'menu.monitor.migration': 'Migration',
'menu.monitor.netinfo': 'Netinfo',
'menu.vmcore': 'Vmcore',
'menu.vmcore.list': 'List',
'menu.vmcore.search': 'Search',
'menu.vmcore.match': 'Match',
'menu.vmcore.config': 'Config',
'menu.newpage': 'Newpage',
'menu.newpage.newPage': 'Newpage',
'menu.more-blocks': 'More Blocks', 'menu.more-blocks': 'More Blocks',
'menu.home': 'Home', 'menu.home': 'Home',
'menu.admin': 'Admin', 'menu.admin': 'Admin',
@ -17,21 +86,21 @@ export default {
'menu.form': 'Form', 'menu.form': 'Form',
'menu.form.basic-form': 'Basic Form', 'menu.form.basic-form': 'Basic Form',
'menu.form.step-form': 'Step Form', 'menu.form.step-form': 'Step Form',
'menu.form.step-form.info': 'Step Form(write transfer information)', 'menu.form.step-form.info': 'Info',
'menu.form.step-form.confirm': 'Step Form(confirm transfer information)', 'menu.form.step-form.confirm': 'Confirm',
'menu.form.step-form.result': 'Step Form(finished)', 'menu.form.step-form.result': 'Result',
'menu.form.advanced-form': 'Advanced Form', 'menu.form.advanced-form': 'Advanced Form',
'menu.list': 'List', 'menu.list': 'List',
'menu.list.table-list': 'Search Table', 'menu.list.table-list': 'Table List',
'menu.list.basic-list': 'Basic List', 'menu.list.basic-list': 'Basic List',
'menu.list.card-list': 'Card List', 'menu.list.card-list': 'Card List',
'menu.list.search-list': 'Search List', 'menu.list.search-list': 'Search List',
'menu.list.search-list.articles': 'Search List(articles)', 'menu.list.search-list.articles': 'Articles',
'menu.list.search-list.projects': 'Search List(projects)', 'menu.list.search-list.projects': 'Projects',
'menu.list.search-list.applications': 'Search List(applications)', 'menu.list.search-list.applications': 'Applications',
'menu.profile': 'Profile', 'menu.profile': 'Profile',
'menu.profile.basic': 'Basic Profile', 'menu.profile.basic': 'Basic',
'menu.profile.advanced': 'Advanced Profile', 'menu.profile.advanced': 'Advanced',
'menu.result': 'Result', 'menu.result': 'Result',
'menu.result.success': 'Success', 'menu.result.success': 'Success',
'menu.result.fail': 'Fail', 'menu.result.fail': 'Fail',
@ -42,11 +111,41 @@ export default {
'menu.exception.trigger': 'Trigger', 'menu.exception.trigger': 'Trigger',
'menu.account': 'Account', 'menu.account': 'Account',
'menu.account.center': 'Account Center', 'menu.account.center': 'Account Center',
'menu.account.settings': 'Account Settings', 'menu.account.settings': 'Settings',
'menu.account.trigger': 'Trigger Error', 'menu.account.trigger': 'Trigger',
'menu.account.logout': 'Logout', 'menu.account.logout': 'Logout',
'menu.editor': 'Graphic Editor', 'menu.editor': 'Editor',
'menu.editor.flow': 'Flow Editor', 'menu.editor.flow': 'Flow',
'menu.editor.mind': 'Mind Editor', 'menu.editor.mind': 'Mind',
'menu.editor.koni': 'Koni Editor', 'menu.editor.koni': 'Koni',
'menu.diagnose': 'Diagnostic Center',
'menu.diagnose.oscheck': 'System Health Check',
'menu.diagnose.cpu': 'Dispatch Diagnostic Center',
'menu.diagnose.cpu.loadtask': 'System Load Diagnosis',
'menu.diagnose.cpu.schedmoni': 'Scheduling Jitter Diagnostics',
'menu.diagnose.storage': 'Storage Diagnostic Center',
'menu.diagnose.storage.iolatency': 'IO Latency Analysis',
'menu.diagnose.storage.iofsstat': 'IO traffic analysis',
'menu.diagnose.storage.iohang': 'IO HANG Diagnosis',
'menu.diagnose.net': 'Network Diagnostic Center',
'menu.diagnose.net.network': 'Network Delay Diagnosis',
'menu.diagnose.net.packetdrop': 'Packet Loss Diagnosis',
'menu.diagnose.net.jitter': 'Jitter Diagnosis',
'menu.diagnose.net.retran': 'Retransmission Diagnosis',
'menu.diagnose.net.pingtrace': 'Latency Diagnosis',
'menu.diagnose.memory': 'Memory Diagnostic Center',
'menu.diagnose.memory.memgraph': 'RAM disk',
'menu.diagnose.memory.filecache': 'Cache Analysis',
'menu.diagnose.memory.oomcheck': 'OOM Diagnosis',
'menu.diagnose.custom': 'Custom Diagnostic Center',
'menu.diagnose.custom.command': 'Command Diagnostics',
'menu.journal': 'Log Center',
'menu.journal.audit': 'Audit Log',
'menu.journal.task': 'Mission Log',
'menu.journal.alarm': 'Alarm Log',
'menu.security': 'Security Center',
'menu.security.list': 'Vulnerability Center',
'menu.diagnose.storage.io': 'IO Delay Diagnosis',
'menu.diagnose.memory.market': 'RAM disk',
'menu.vmcore.analyse': 'Online Analysis',
}; };

View File

@ -1,14 +1,55 @@
export default { export default {
'pages.layouts.userLayout.title': // 'pages.language': 'English',
'Ant Design is the most influential web design specification in Xihu district', // 'pages.layouts.userLayout.title': 'SYSOM',
// 'pages.login.accountLogin.tab': 'Account Login',
// 'pages.login.accountLogin.errorMessage': 'Incorrect username/password(admin/ant.design)',
// 'pages.login.failure': 'Login failed, please try again!',
// 'pages.login.success': 'Login successful!',
// 'pages.login.username.placeholder': 'Username: admin or user',
// 'pages.login.username.required': 'Please input your username!',
// 'pages.login.password.placeholder': 'Password: ant.design',
// 'pages.login.password.required': 'Please input your password!',
// 'pages.login.phoneLogin.tab': 'Phone Login',
// 'pages.login.phoneLogin.errorMessage': 'Verification Code Error',
// 'pages.login.phoneNumber.placeholder': 'Phone Number',
// 'pages.login.phoneNumber.required': 'Please input your phone number!',
// 'pages.login.phoneNumber.invalid': 'Phone number is invalid!',
// 'pages.login.captcha.placeholder': 'Verification Code',
// 'pages.login.captcha.required': 'Please input verification code!',
// 'pages.login.phoneLogin.getVerificationCode': 'Get Code',
// 'pages.getCaptchaSecondText': 'sec(s)',
// 'pages.login.rememberMe': 'Remember me',
// 'pages.login.forgotPassword': 'Forgot Password ?',
// 'pages.login.submit': 'Login',
// 'pages.login.loginWith': 'Login with :',
// 'pages.login.registerAccount': 'Register Account',
// 'pages.welcome.advancedComponent': 'Advanced Component',
// 'pages.welcome.link': 'Welcome',
// 'pages.welcome.advancedLayout': 'Advanced Layout',
// 'pages.welcome.alertMessage': 'Faster and stronger heavy-duty components have been released.',
// 'pages.admin.subPage.title': 'This page can only be viewed by Admin',
// 'pages.admin.subPage.alertMessage': 'Umi ui is now released, welcome to use npm run ui to start the experience.',
'pages.language': '中文',
'pages.layouts.userLayout.title': 'System Operation&Maintenance',
'pages.login.accountLogin.tab': 'Account Login', 'pages.login.accountLogin.tab': 'Account Login',
'pages.login.accountLogin.errorMessage': 'Incorrect username/password(admin/ant.design)', 'pages.login.passwordLogin.tab': 'Change Password',
'pages.login.accountLogin.errorMessage': 'Incorrect username/password(admin/123456)',
'pages.login.passwordLogin.errorMessage': 'Incorrect username/password(admin/123456)',
'pages.login.failure': 'Login failed, please try again!', 'pages.login.failure': 'Login failed, please try again!',
'pages.password.failure': 'Password failed, please try again!',
'pages.login.success': 'Login successful!', 'pages.login.success': 'Login successful!',
'pages.login.username.placeholder': 'Username: admin or user', 'pages.changepassword.success': 'Change password successful!',
'pages.login.username.required': 'Please input your username!', 'pages.login.username.placeholder': 'Please input your username!',
'pages.login.password.placeholder': 'Password: ant.design', 'pages.login.username.required': 'username is required!',
'pages.login.password.required': 'Please input your password!', 'pages.login.password.placeholder': 'Please input your password!',
'pages.login.row_password.placeholder': 'Please input your row password!',
'pages.login.new_password.placeholder': 'Please input your new password!',
'pages.login.new_password_again.placeholder': 'Please enter the new password again!',
'pages.login.password.required': 'password is required!',
'pages.login.row_password.required': 'row password is required!',
'pages.login.new_password.required': 'new password is required!',
'pages.login.new_password_again.required': 'Please enter the new password again!',
'pages.login.phoneLogin.tab': 'Phone Login', 'pages.login.phoneLogin.tab': 'Phone Login',
'pages.login.phoneLogin.errorMessage': 'Verification Code Error', 'pages.login.phoneLogin.errorMessage': 'Verification Code Error',
'pages.login.phoneNumber.placeholder': 'Phone Number', 'pages.login.phoneNumber.placeholder': 'Phone Number',
@ -27,7 +68,117 @@ export default {
'pages.welcome.link': 'Welcome', 'pages.welcome.link': 'Welcome',
'pages.welcome.advancedLayout': 'Advanced Layout', 'pages.welcome.advancedLayout': 'Advanced Layout',
'pages.welcome.alertMessage': 'Faster and stronger heavy-duty components have been released.', 'pages.welcome.alertMessage': 'Faster and stronger heavy-duty components have been released.',
'pages.admin.subPage.title': 'This page can only be viewed by Admin', 'pages.admin.subPage.title': ' This page can only be viewed by Admin',
'pages.admin.subPage.alertMessage': 'pages.admin.subPage.alertMessage': 'Umi ui is now released, welcome to use npm run ui to start the experience.',
'Umi ui is now released, welcome to use npm run ui to start the experience.', 'pages.hostTable.title': 'Host',
'pages.hostTable.cluster': 'Cluster',
'pages.hostTable.hostname': 'Hostname',
'pages.hostTable.hostname_required': 'hostname is required!',
'pages.hostTable.username_required': 'username is required!',
'pages.hostTable.cluster_required': 'cluster is required!',
'pages.hostTable.cluster_name_required': 'cluster name is required!',
'pages.hostTable.ip': 'IP',
'pages.hostTable.ip_required': 'IP is required!',
'pages.hostTable.newHost': 'New Host',
'pages.hostTable.password': 'Password',
'pages.hostTable.password_required': 'password is required!',
'pages.hostTable.status': 'Host Status',
'pages.hostTable.status.offline': 'Offline',
'pages.hostTable.status.running': 'Running',
'pages.hostTable.status.abnormal': 'Abnormal',
'pages.hostTable.status.migrating': 'Migrating',
'pages.hostTable.port': 'Port',
'pages.hostTable.port_required': 'port is required!',
'pages.hostTable.script_required': 'script is required!',
'pages.hostTable.description': 'Description',
'pages.hostTable.hostOption': 'Option',
'pages.hostTable.hostUpdatedAt': 'Updated Time',
'pages.hostTable.edit': 'Edit',
'pages.hostTable.delete': 'Delete',
'pages.hostTable.createForm.newHost': 'New Host',
'pages.hostTable.host': 'host is required!',
'pages.hostTable.createForm.editHost': 'Edit Host',
'pages.hostTable.hostRelease': 'Host Release',
'pages.hostTable.hostKernelVersion': 'Host Kernel Version',
'pages.clusterTable.title': 'Cluster Management',
'pages.clusterTable.clusterName': 'Cluster Name',
'pages.clusterTable.clusterDescription': 'Cluster Description',
'pages.clusterTable.clusterCreatedAt': 'Created Time',
'pages.clusterTable.clusterOption': 'Option',
'pages.clusterTable.delete': 'Delete',
'pages.clusterTable.hostCount': 'Host Count',
'pages.clusterTable.notAllowToBeDelete': 'Deletion of clusters containing hosts is not allowed',
'pages.IssueTable.createIssue': 'New Plan',
'pages.journal.audit.title': 'Log List',
'pages.journal.audit.created_at': 'Time',
'pages.journal.audit.username': 'Username',
'pages.journal.audit.request_ip': 'Source IP',
'pages.journal.audit.request_url': 'Request URL',
'pages.journal.audit.request_method': 'Request Method',
'pages.journal.audit.request_option': 'Behavior Type',
'pages.journal.audit.login': 'Login Behavior',
'pages.journal.audit.action': 'Operational Behavior',
'pages.journal.audit.response_status': 'Return Status',
'pages.journal.task.task_id': 'Task ID',
'pages.journal.task.status': 'Status',
'pages.journal.task.params': 'Parameter List',
'pages.journal.task.success': 'Success',
'pages.journal.task.fail': 'Fail',
'pages.journal.alarm.collected_time': 'Alarm Time',
'pages.journal.alarm.level': 'Alarm Level',
'pages.journal.alarm.noticelcon_type': 'Type',
'pages.journal.alarm.is_read': 'Whether Read',
'pages.journal.alarm.true': 'Have Read',
'pages.journal.alarm.false': 'Unread',
'pages.journal.alarm.message': 'Alarm Content',
'pages.security.list.index': 'Serial Number',
'pages.security.list.cve_id': 'Serial Number',
'pages.security.list.pub_time': 'Release Time',
'pages.security.list.vul_level': 'Vulnerability Level',
'pages.security.list.hosts': 'involving the host',
'pages.security.list.operation': 'Operation',
'pages.security.list.high': 'High risk',
'pages.security.list.medium': 'Medium risk',
'pages.security.list.critical': 'Serious',
'pages.security.list.low': 'Low risk',
'pages.security.list.repair': 'Repair',
'pages.security.list.confirm': 'Are you sure you want to fix it?',
'pages.security.list.re': 'under repair.',
'pages.security.list.error': 'Fix went wrong',
'pages.security.list.details': 'check the details',
'pages.security.Homelist.name': 'name of software',
'pages.security.Homelist.vul_level': 'severity',
'pages.security.Homelist.fixed_version': 'fix version',
'pages.security.Homelist.hostname': 'host name',
'pages.security.Homelist.ip': 'IP address',
'pages.security.Homelist.created_by': 'user',
'pages.security.Homelist.created_at': 'creation time',
'pages.security.Homelist.status': 'Host Status',
'pages.security.Homelist.re': 'repairing',
'pages.security.Historical.title': 'Historical repair vulnerability information',
'pages.security.Historical.id': 'serial number',
'pages.security.Historical.cve_id': 'cve number',
'pages.security.Historical.fixed_time': 'repair time',
'pages.security.Historical.fix_user': 'Restorer',
'pages.security.Historical.vul_level': 'vulnerability level',
'pages.security.Historical.severe_risk': 'Serious',
'pages.security.Historical.high_risk': 'High risk',
'pages.security.Historical.medium_risk': 'Medium risk',
'pages.security.Historical.low_risk': 'Low risk',
'pages.security.Historical.fix_status': 'cve repair status',
'pages.security.Historical.details': 'check the details',
'pages.security.Historical.back': 'return',
'pages.security.Historical.created_at': 'creation time',
'pages.security.Historical.success': 'success',
'pages.security.Historical.fail': 'fail',
'pages.security.Historical.fix_details': 'CVE fix details',
'pages.security.Historical.fix_success': 'CVE repaired successfully',
'pages.security.Setting.name': 'Vulnerability library name',
'pages.security.Setting.url': 'address',
'pages.security.Historical.fix_fail': 'CVE repair failed, failure reason:',
'pages.security.notification.fix.success': 'System vulnerabilities have been fixed',
'pages.security.notification.fix.success.content': 'If you are running the services involved in the vulnerability, it is recommended that you restart the relevant services to make the vulnerability fix take effect.',
'pages.click.enter': 'click to enter',
'pages.login': 'Login',
'pages.changepassword': 'Change Password',
}; };

View File

@ -29,13 +29,11 @@ export default {
'app.settings.security.phone': 'Security Phone', 'app.settings.security.phone': 'Security Phone',
'app.settings.security.phone-description': 'Bound phone', 'app.settings.security.phone-description': 'Bound phone',
'app.settings.security.question': 'Security Question', 'app.settings.security.question': 'Security Question',
'app.settings.security.question-description': 'app.settings.security.question-description': 'The security question is not set, and the security policy can effectively protect the account security',
'The security question is not set, and the security policy can effectively protect the account security',
'app.settings.security.email': 'Backup Email', 'app.settings.security.email': 'Backup Email',
'app.settings.security.email-description': 'Bound Email', 'app.settings.security.email-description': 'Bound Email',
'app.settings.security.mfa': 'MFA Device', 'app.settings.security.mfa': 'MFA Device',
'app.settings.security.mfa-description': 'app.settings.security.mfa-description': 'Unbound MFA device, after binding, can be confirmed twice',
'Unbound MFA device, after binding, can be confirmed twice',
'app.settings.security.modify': 'Modify', 'app.settings.security.modify': 'Modify',
'app.settings.security.set': 'Set', 'app.settings.security.set': 'Set',
'app.settings.security.bind': 'Bind', 'app.settings.security.bind': 'Bind',
@ -47,14 +45,11 @@ export default {
'app.settings.binding.dingding-description': 'Currently unbound DingTalk account', 'app.settings.binding.dingding-description': 'Currently unbound DingTalk account',
'app.settings.binding.bind': 'Bind', 'app.settings.binding.bind': 'Bind',
'app.settings.notification.password': 'Account Password', 'app.settings.notification.password': 'Account Password',
'app.settings.notification.password-description': 'app.settings.notification.password-description': 'Messages from other users will be notified in the form of a station letter',
'Messages from other users will be notified in the form of a station letter',
'app.settings.notification.messages': 'System Messages', 'app.settings.notification.messages': 'System Messages',
'app.settings.notification.messages-description': 'app.settings.notification.messages-description': 'System messages will be notified in the form of a station letter',
'System messages will be notified in the form of a station letter',
'app.settings.notification.todo': 'To-do Notification', 'app.settings.notification.todo': 'To-do Notification',
'app.settings.notification.todo-description': 'app.settings.notification.todo-description': 'The to-do list will be notified in the form of a letter from the station',
'The to-do list will be notified in the form of a letter from the station',
'app.settings.open': 'Open', 'app.settings.open': 'Open',
'app.settings.close': 'Close', 'app.settings.close': 'Close',
}; };

View File

@ -6,7 +6,7 @@ import settingDrawer from './zh-CN/settingDrawer';
import settings from './zh-CN/settings'; import settings from './zh-CN/settings';
import pages from './zh-CN/pages'; import pages from './zh-CN/pages';
export default { export default {
'navBar.lang': '语言', 'navBar.lang': '中文',
'layout.user.link.help': '帮助', 'layout.user.link.help': '帮助',
'layout.user.link.privacy': '隐私', 'layout.user.link.privacy': '隐私',
'layout.user.link.terms': '条款', 'layout.user.link.terms': '条款',

View File

@ -8,7 +8,6 @@ export default {
'menu.migrate.implement': '迁移实施', 'menu.migrate.implement': '迁移实施',
'menu.migrate.assess': '迁移评估', 'menu.migrate.assess': '迁移评估',
'menu.monitor': '监控中心', 'menu.monitor': '监控中心',
'menu.monitor.': '监控中心',
'menu.monitor.dashboard': '系统监控', 'menu.monitor.dashboard': '系统监控',
'menu.monitor.migration': '迁移监控', 'menu.monitor.migration': '迁移监控',
'menu.monitor.netinfo': 'NetInfo', 'menu.monitor.netinfo': 'NetInfo',
@ -69,20 +68,33 @@ export default {
'menu.editor.mind': '脑图编辑器', 'menu.editor.mind': '脑图编辑器',
'menu.editor.koni': '拓扑编辑器', 'menu.editor.koni': '拓扑编辑器',
'menu.diagnose': '诊断中心', 'menu.diagnose': '诊断中心',
'menu.diagnose.storage': '存储诊断中心',
'menu.diagnose.storage.io': 'IO延时诊断',
'menu.diagnose.net': '网络诊断中心',
'menu.diagnose.net.network': '网络延时诊断',
'menu.diagnose.oscheck': '系统健康检查', 'menu.diagnose.oscheck': '系统健康检查',
'menu.diagnose.cpu': '调度诊断中心', 'menu.diagnose.cpu': '调度诊断中心',
'menu.diagnose.cpu.loadtask': '系统负载诊断', 'menu.diagnose.cpu.loadtask': '系统负载诊断',
'menu.diagnose.cpu.schedmoni': '调度抖动诊断',
'menu.diagnose.storage': '存储诊断中心',
'menu.diagnose.storage.iolatency': 'IO时延分析',
'menu.diagnose.storage.iofsstat': 'IO流量分析',
'menu.diagnose.storage.iohang': 'IO HANG诊断',
'menu.diagnose.net': '网络诊断中心',
'menu.diagnose.net.network': '网络延时诊断',
'menu.diagnose.net.packetdrop': '丢包诊断',
'menu.diagnose.net.jitter': '抖动诊断',
'menu.diagnose.net.retran': '重传诊断',
'menu.diagnose.net.pingtrace': '时延诊断',
'menu.diagnose.memory': '内存诊断中心', 'menu.diagnose.memory': '内存诊断中心',
'menu.diagnose.memory.market': '内存大盘', 'menu.diagnose.memory.memgraph': '内存大盘',
'menu.vmcore.analyse': '在线分析', 'menu.diagnose.memory.filecache': 'Cache分析',
'menu.diagnose.memory.oomcheck': 'OOM诊断',
'menu.diagnose.custom': '自定义诊断中心',
'menu.diagnose.custom.command': '命令诊断',
'menu.journal': '日志中心', 'menu.journal': '日志中心',
'menu.journal.audit': '审计日志', 'menu.journal.audit': '审计日志',
'menu.journal.alarm': '告警日志',
'menu.journal.task': '任务日志', 'menu.journal.task': '任务日志',
'menu.journal.alarm': '告警日志',
'menu.security': '安全中心', 'menu.security': '安全中心',
'menu.security.list': '漏洞中心' 'menu.security.list': '漏洞中心',
'menu.diagnose.storage.io': 'IO延时诊断',
'menu.diagnose.memory.market': '内存大盘',
'menu.vmcore.analyse': '在线分析',
}; };

View File

@ -1,4 +1,5 @@
export default { export default {
'pages.language': 'English',
'pages.layouts.userLayout.title': '系统运维平台', 'pages.layouts.userLayout.title': '系统运维平台',
'pages.login.accountLogin.tab': '账户密码登录', 'pages.login.accountLogin.tab': '账户密码登录',
'pages.login.passwordLogin.tab': '账户密码修改', 'pages.login.passwordLogin.tab': '账户密码修改',
@ -146,4 +147,7 @@ export default {
'pages.security.Historical.fix_fail': 'CVE修复失败失败原因', 'pages.security.Historical.fix_fail': 'CVE修复失败失败原因',
'pages.security.notification.fix.success': '系统漏洞已修复', 'pages.security.notification.fix.success': '系统漏洞已修复',
'pages.security.notification.fix.success.content': '如您正在运行漏洞涉及到的服务,建议您重启相关服务使漏洞修复生效。', 'pages.security.notification.fix.success.content': '如您正在运行漏洞涉及到的服务,建议您重启相关服务使漏洞修复生效。',
'pages.click.enter': '点击进入',
'pages.login': '登录',
'pages.changepassword': '修改密码',
}; };

View File

@ -1,5 +1,5 @@
import { Layout, Carousel, Menu } from 'antd'; import { Layout, Carousel, Menu } from 'antd';
import { useIntl } from 'umi'; import { useIntl, FormattedMessage } from 'umi';
import AvatarDrop from './../components/RightContent' import AvatarDrop from './../components/RightContent'
import styles from './Welcome.less'; import styles from './Welcome.less';
import Footer from '@/components/Footer'; import Footer from '@/components/Footer';
@ -21,49 +21,85 @@ const Welcome = () => {
<Layout className="layout"> <Layout className="layout">
<Header className={styles.header}> <Header className={styles.header}>
<div className={styles.logo}> <div className={styles.logo}>
系统运维平台 <FormattedMessage id="pages.layouts.userLayout.title" />
</div> </div>
<Menu className={styles.menuCenter} selectedKeys='home' mode="horizontal"> <Menu className={styles.menuCenter} selectedKeys='home' mode="horizontal">
<Menu.Item key="home"><a href="/">首页</a></Menu.Item> <Menu.Item key="home"><a href="/"><FormattedMessage id="menu.welcome" /></a></Menu.Item>
{/* <Menu.Item key="host"><a href="/host">主机管理</a></Menu.Item> */} <SubMenu key="host" title={intl.formatMessage({
<SubMenu key="host" title="主机管理"> id: "menu.host",
<Menu.Item key="hostlist"><a href="/host/list">主机列表</a></Menu.Item> })}>
<Menu.Item key="cluster"><a href="/host/cluster">集群列表</a></Menu.Item> <Menu.Item key="hostlist"><a href="/host/list"><FormattedMessage id="menu.host.list" /></a></Menu.Item>
<Menu.Item key="cluster"><a href="/host/cluster"><FormattedMessage id="menu.host.cluster" /></a></Menu.Item>
</SubMenu> </SubMenu>
<SubMenu key="migrate" title="操作系统迁移"> <SubMenu key="migrate" title={intl.formatMessage({
<Menu.Item key="assess"><a href="/migrate/assess">迁移评估</a></Menu.Item> id: "menu.migrate",
<Menu.Item key="implement"><a href="/migrate/implement">迁移实施</a></Menu.Item> })}>
<Menu.Item key="assess"><a href="/migrate/assess"><FormattedMessage id="menu.migrate.assess" /></a></Menu.Item>
<Menu.Item key="implement"><a href="/migrate/implement"><FormattedMessage id="menu.migrate.implement" /></a></Menu.Item>
</SubMenu> </SubMenu>
<SubMenu key="monitor" title="监控中心"> <SubMenu key="monitor" title={intl.formatMessage({
<Menu.Item key="dashboard"><a href="/monitor/dashboard">系统监控</a></Menu.Item> id: "menu.monitor",
})}>
<Menu.Item key="dashboard"><a href="/monitor/dashboard"><FormattedMessage id="menu.monitor.dashboard" /></a></Menu.Item>
<Menu.Item key="migration"><a href="/monitor/migration"><FormattedMessage id="menu.monitor.migration" /></a></Menu.Item>
</SubMenu> </SubMenu>
<SubMenu key="vmcore" title="宕机中心"> <SubMenu key="vmcore" title={intl.formatMessage({
<Menu.Item key="vmlist"><a href="/vmcore/list">宕机列表</a></Menu.Item> id: "menu.vmcore",
<Menu.Item key="vmmatch"><a href="/vmcore/match">宕机匹配</a></Menu.Item> })}>
<Menu.Item key="vmconfig"><a href="/vmcore/config">宕机配置</a></Menu.Item> <Menu.Item key="vmlist"><a href="/vmcore/list"><FormattedMessage id="menu.vmcore.list" /></a></Menu.Item>
<Menu.Item key="vmmatch"><a href="/vmcore/match"><FormattedMessage id="menu.vmcore.match" /></a></Menu.Item>
<Menu.Item key="vmconfig"><a href="/vmcore/config"><FormattedMessage id="menu.vmcore.config" /></a></Menu.Item>
</SubMenu> </SubMenu>
<SubMenu key="diagnose" title="诊断中心"> <SubMenu key="diagnose" title={intl.formatMessage({
<Menu.Item key="oscheck"><a href="/diagnose/oscheck">系统健康检查</a></Menu.Item> id: "menu.diagnose",
<SubMenu key="cpu" title="调度诊断中心"> })}>
<Menu.Item key="loadtask"><a href="/diagnose/cpu/">系统负载诊断</a></Menu.Item> <Menu.Item key="oscheck"><a href="/diagnose/oscheck"><FormattedMessage id="menu.diagnose.oscheck" /></a></Menu.Item>
<SubMenu key="cpu" title={intl.formatMessage({
id: "menu.diagnose.cpu",
})}>
<Menu.Item key="schedmoni"><a href="/diagnose/cpu/schedmoni/"><FormattedMessage id="menu.diagnose.cpu.schedmoni" /></a></Menu.Item>
<Menu.Item key="loadtask"><a href="/diagnose/cpu/loadtask/"><FormattedMessage id="menu.diagnose.cpu.loadtask" /></a></Menu.Item>
</SubMenu> </SubMenu>
<SubMenu key="storage" title="存储诊断中心"> <SubMenu key="storage" title={intl.formatMessage({
<Menu.Item key="io"><a href="/diagnose/storage/">IO延时诊断</a></Menu.Item> id: "menu.diagnose.storage",
})}>
<Menu.Item key="iolatency"><a href="/diagnose/storage/iolatency/"><FormattedMessage id="menu.diagnose.storage.iolatency" /></a></Menu.Item>
<Menu.Item key="iofsstat"><a href="/diagnose/storage/iofsstat/"><FormattedMessage id="menu.diagnose.storage.iofsstat" /></a></Menu.Item>
<Menu.Item key="iohang"><a href="/diagnose/storage/iohang/"><FormattedMessage id="menu.diagnose.storage.iohang" /></a></Menu.Item>
</SubMenu> </SubMenu>
<SubMenu key="net" title="网络诊断中心"> <SubMenu key="net" title={intl.formatMessage({
<Menu.Item key="network"><a href="/diagnose/net/">网络延时诊断</a></Menu.Item> id: "menu.diagnose.net",
})}>
<Menu.Item key="network"><a href="/diagnose/net/network/"><FormattedMessage id="menu.diagnose.net.network" /></a></Menu.Item>
<Menu.Item key="packetdrop"><a href="/diagnose/net/packetdrop/"><FormattedMessage id="menu.diagnose.net.packetdrop" /></a></Menu.Item>
<Menu.Item key="jitter"><a href="/diagnose/net/jitter/"><FormattedMessage id="menu.diagnose.net.jitter" /></a></Menu.Item>
<Menu.Item key="retran"><a href="/diagnose/net/retran/"><FormattedMessage id="menu.diagnose.net.retran" /></a></Menu.Item>
<Menu.Item key="pingtrace"><a href="/diagnose/net/pingtrace/"><FormattedMessage id="menu.diagnose.net.pingtrace" /></a></Menu.Item>
</SubMenu> </SubMenu>
<SubMenu key="memory" title="内存诊断中心"> <SubMenu key="memory" title={intl.formatMessage({
<Menu.Item key="market"><a href="/diagnose/memory/">内存大盘</a></Menu.Item> id: "menu.diagnose.memory",
})}>
<Menu.Item key="memgraph"><a href="/diagnose/memory/memgraph/"><FormattedMessage id="menu.diagnose.memory.memgraph" /></a></Menu.Item>
<Menu.Item key="filecache"><a href="/diagnose/memory/filecache/"><FormattedMessage id="menu.diagnose.memory.filecache" /></a></Menu.Item>
<Menu.Item key="oomcheck"><a href="/diagnose/memory/oomcheck/"><FormattedMessage id="menu.diagnose.memory.oomcheck" /></a></Menu.Item>
</SubMenu>
<SubMenu key="custom" title={intl.formatMessage({
id: "menu.diagnose.custom",
})}>
<Menu.Item key="command"><a href="/diagnose/memory/command/"><FormattedMessage id="menu.diagnose.custom.command" /></a></Menu.Item>
</SubMenu> </SubMenu>
</SubMenu> </SubMenu>
<SubMenu key="journal" title="日志中心"> <SubMenu key="journal" title={intl.formatMessage({
<Menu.Item key="audit"><a href="/journal/audit">审计日志</a></Menu.Item> id: "menu.journal",
<Menu.Item key="task"><a href="/journal/task">任务日志</a></Menu.Item> })}>
<Menu.Item key="alarm"><a href="/journal/alarm">告警日志</a></Menu.Item> <Menu.Item key="audit"><a href="/journal/audit"><FormattedMessage id="menu.journal.audit" /></a></Menu.Item>
<Menu.Item key="task"><a href="/journal/task"><FormattedMessage id="menu.journal.task" /></a></Menu.Item>
<Menu.Item key="alarm"><a href="/journal/alarm"><FormattedMessage id="menu.journal.alarm" /></a></Menu.Item>
</SubMenu> </SubMenu>
<SubMenu key="security" title="安全中心"> <SubMenu key="security" title={intl.formatMessage({
<Menu.Item key="List"><a href="/security/List">漏洞中心</a></Menu.Item> id: "menu.security",
})}>
<Menu.Item key="List"><a href="/security/List"><FormattedMessage id="menu.security.list" /></a></Menu.Item>
</SubMenu> </SubMenu>
</Menu> </Menu>
<div className={styles.avatarRight}> <div className={styles.avatarRight}>
@ -77,7 +113,7 @@ const Welcome = () => {
<div className={styles.banner} key={item.key}> <div className={styles.banner} key={item.key}>
<div className={styles.title}> <div className={styles.title}>
<h3>{item.title}</h3> <h3>{item.title}</h3>
<a href={item.urls}>点击进入</a> <a href={item.urls}><FormattedMessage id="pages.click.enter" /></a>
</div> </div>
<div className={styles.img} style={{backgroundColor: item.banner}}></div> <div className={styles.img} style={{backgroundColor: item.banner}}></div>
</div> </div>

View File

@ -19,12 +19,12 @@
.logo{ .logo{
position: absolute; position: absolute;
left: 84px; left: 84px;
width: 120px; width: 240px;
font-size: 16px; font-size: 16px;
} }
.menuCenter{ .menuCenter{
position: absolute; position: absolute;
width: 46%; width: 50%;
left: 50%; left: 50%;
transform: translate(-50%,-5%); transform: translate(-50%,-5%);
line-height: 48px!important; line-height: 48px!important;

View File

@ -8,9 +8,9 @@ import { WrapperContext } from '../../containers';
import { SET_DATA } from '../../containers/constants'; import { SET_DATA } from '../../containers/constants';
import './index.less'; import './index.less';
const getSysConfigList = async () => { // const getSysConfigList = async () => {
return await querySysConfigList(); // return await querySysConfigList();
} // }
const SYS_CONFIG_TYPE = { const SYS_CONFIG_TYPE = {
os_env: '环境变量', os_env: '环境变量',

View File

@ -84,7 +84,9 @@ const Login = () => {
<div className={styles.container}> <div className={styles.container}>
<div className={styles.content}> <div className={styles.content}>
<LoginForm <LoginForm
title="系统运维平台" title={intl.formatMessage({
id: "pages.layouts.userLayout.title",
})}
subTitle={intl.formatMessage({ subTitle={intl.formatMessage({
id: "pages.layouts.userLayout.title", id: "pages.layouts.userLayout.title",
})} })}
@ -106,7 +108,7 @@ const Login = () => {
block={true} block={true}
type="primary" type="primary"
> >
登录 <FormattedMessage id="pages.login" />
</Button> </Button>
) : ( ) : (
<Button <Button
@ -116,7 +118,7 @@ const Login = () => {
block={true} block={true}
type="primary" type="primary"
> >
修改密码 <FormattedMessage id="pages.changepassword" />
</Button> </Button>
); );
return [mod]; return [mod];