国际化

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',
fixedHeader: true,
fixSiderbar: true,
// title: 'System Operation&Maintenance',
title: '系统运维平台',
logo: null,
footerLink: {

View File

@ -1,25 +1,9 @@
{
"version":1.0,
"folder": {
"menu.diagnose.memory": "内存诊断中心",
"menu.diagnose.storage": "存储诊断中心",
"menu.diagnose.net": "网络诊断中心",
"menu.diagnose.cpu": "调度诊断中心",
"menu.diagnose.custom": "自定义诊断中心"
},
"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 { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons';
import { Avatar, Menu, Spin } from 'antd';
import { history, useModel } from 'umi';
import { Avatar, Menu, Spin, Button } from 'antd';
import { history, useModel, FormattedMessage, setLocale, getLocale } from 'umi';
import { stringify } from 'querystring';
import HeaderDropdown from '../HeaderDropdown';
import styles from './index.less';
@ -85,13 +85,38 @@ const AvatarDropdown = ({ menu }) => {
</Menu.Item>
</Menu>
);
const changLang = () => {
const locale = getLocale();
console.log(locale);
if (!locale || locale === 'zh-CN') {
setLocale('en-US');
} else {
setLocale('zh-CN');
}
};
return (
<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>
<>
<div style={{ float: 'left', }}>
<Button
size="small"
// ghost={theme === 'dark'}
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 settings from './en-US/settings';
export default {
'navBar.lang': 'Languages',
'navBar.lang': 'English',
'layout.user.link.help': 'Help',
'layout.user.link.privacy': 'Privacy',
'layout.user.link.terms': 'Terms',

View File

@ -1,5 +1,22 @@
export default {
// 'component.tagSelect.expand': 'Expand',
// 'component.tagSelect.collapse': 'Collapse',
// 'component.tagSelect.all': 'All',
'component.tagSelect.expand': 'Expand',
'component.tagSelect.collapse': 'Collapse',
'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 {
'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.home': 'Home',
'menu.admin': 'Admin',
@ -17,21 +86,21 @@ export default {
'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.step-form.info': 'Info',
'menu.form.step-form.confirm': 'Confirm',
'menu.form.step-form.result': 'Result',
'menu.form.advanced-form': 'Advanced Form',
'menu.list': 'List',
'menu.list.table-list': 'Search Table',
'menu.list.table-list': 'Table List',
'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.list.search-list.articles': 'Articles',
'menu.list.search-list.projects': 'Projects',
'menu.list.search-list.applications': 'Applications',
'menu.profile': 'Profile',
'menu.profile.basic': 'Basic Profile',
'menu.profile.advanced': 'Advanced Profile',
'menu.profile.basic': 'Basic',
'menu.profile.advanced': 'Advanced',
'menu.result': 'Result',
'menu.result.success': 'Success',
'menu.result.fail': 'Fail',
@ -42,11 +111,41 @@ export default {
'menu.exception.trigger': 'Trigger',
'menu.account': 'Account',
'menu.account.center': 'Account Center',
'menu.account.settings': 'Account Settings',
'menu.account.trigger': 'Trigger Error',
'menu.account.settings': 'Settings',
'menu.account.trigger': 'Trigger',
'menu.account.logout': 'Logout',
'menu.editor': 'Graphic Editor',
'menu.editor.flow': 'Flow Editor',
'menu.editor.mind': 'Mind Editor',
'menu.editor.koni': 'Koni Editor',
'menu.editor': 'Editor',
'menu.editor.flow': 'Flow',
'menu.editor.mind': 'Mind',
'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 {
'pages.layouts.userLayout.title':
'Ant Design is the most influential web design specification in Xihu district',
// 'pages.language': 'English',
// '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.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.password.failure': 'Password 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.changepassword.success': 'Change password successful!',
'pages.login.username.placeholder': 'Please input your username!',
'pages.login.username.required': 'username is required!',
'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.errorMessage': 'Verification Code Error',
'pages.login.phoneNumber.placeholder': 'Phone Number',
@ -27,7 +68,117 @@ export default {
'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.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.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-description': 'Bound phone',
'app.settings.security.question': 'Security Question',
'app.settings.security.question-description':
'The security question is not set, and the security policy can effectively protect the account security',
'app.settings.security.question-description': '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-description': 'Bound Email',
'app.settings.security.mfa': 'MFA Device',
'app.settings.security.mfa-description':
'Unbound MFA device, after binding, can be confirmed twice',
'app.settings.security.mfa-description': 'Unbound MFA device, after binding, can be confirmed twice',
'app.settings.security.modify': 'Modify',
'app.settings.security.set': 'Set',
'app.settings.security.bind': 'Bind',
@ -47,14 +45,11 @@ export default {
'app.settings.binding.dingding-description': 'Currently unbound DingTalk account',
'app.settings.binding.bind': 'Bind',
'app.settings.notification.password': 'Account Password',
'app.settings.notification.password-description':
'Messages from other users will be notified in the form of a station letter',
'app.settings.notification.password-description': 'Messages from other users will be notified in the form of a station letter',
'app.settings.notification.messages': 'System Messages',
'app.settings.notification.messages-description':
'System messages will be notified in the form of a station letter',
'app.settings.notification.messages-description': 'System messages will be notified in the form of a station letter',
'app.settings.notification.todo': 'To-do Notification',
'app.settings.notification.todo-description':
'The to-do list will be notified in the form of a letter from the station',
'app.settings.notification.todo-description': 'The to-do list will be notified in the form of a letter from the station',
'app.settings.open': 'Open',
'app.settings.close': 'Close',
};

View File

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

View File

@ -8,7 +8,6 @@ export default {
'menu.migrate.implement': '迁移实施',
'menu.migrate.assess': '迁移评估',
'menu.monitor': '监控中心',
'menu.monitor.': '监控中心',
'menu.monitor.dashboard': '系统监控',
'menu.monitor.migration': '迁移监控',
'menu.monitor.netinfo': 'NetInfo',
@ -69,20 +68,33 @@ export default {
'menu.editor.mind': '脑图编辑器',
'menu.editor.koni': '拓扑编辑器',
'menu.diagnose': '诊断中心',
'menu.diagnose.storage': '存储诊断中心',
'menu.diagnose.storage.io': 'IO延时诊断',
'menu.diagnose.net': '网络诊断中心',
'menu.diagnose.net.network': '网络延时诊断',
'menu.diagnose.oscheck': '系统健康检查',
'menu.diagnose.cpu': '调度诊断中心',
'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.market': '内存大盘',
'menu.vmcore.analyse': '在线分析',
'menu.diagnose.memory.memgraph': '内存大盘',
'menu.diagnose.memory.filecache': 'Cache分析',
'menu.diagnose.memory.oomcheck': 'OOM诊断',
'menu.diagnose.custom': '自定义诊断中心',
'menu.diagnose.custom.command': '命令诊断',
'menu.journal': '日志中心',
'menu.journal.audit': '审计日志',
'menu.journal.alarm': '告警日志',
'menu.journal.task': '任务日志',
'menu.journal.alarm': '告警日志',
'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 {
'pages.language': 'English',
'pages.layouts.userLayout.title': '系统运维平台',
'pages.login.accountLogin.tab': '账户密码登录',
'pages.login.passwordLogin.tab': '账户密码修改',
@ -146,4 +147,7 @@ export default {
'pages.security.Historical.fix_fail': 'CVE修复失败失败原因',
'pages.security.notification.fix.success': '系统漏洞已修复',
'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 { useIntl } from 'umi';
import { useIntl, FormattedMessage } from 'umi';
import AvatarDrop from './../components/RightContent'
import styles from './Welcome.less';
import Footer from '@/components/Footer';
@ -21,49 +21,85 @@ const Welcome = () => {
<Layout className="layout">
<Header className={styles.header}>
<div className={styles.logo}>
系统运维平台
<FormattedMessage id="pages.layouts.userLayout.title" />
</div>
<Menu className={styles.menuCenter} selectedKeys='home' mode="horizontal">
<Menu.Item key="home"><a href="/">首页</a></Menu.Item>
{/* <Menu.Item key="host"><a href="/host">主机管理</a></Menu.Item> */}
<SubMenu key="host" title="主机管理">
<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="home"><a href="/"><FormattedMessage id="menu.welcome" /></a></Menu.Item>
<SubMenu key="host" title={intl.formatMessage({
id: "menu.host",
})}>
<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 key="migrate" title="操作系统迁移">
<Menu.Item key="assess"><a href="/migrate/assess">迁移评估</a></Menu.Item>
<Menu.Item key="implement"><a href="/migrate/implement">迁移实施</a></Menu.Item>
<SubMenu key="migrate" title={intl.formatMessage({
id: "menu.migrate",
})}>
<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 key="monitor" title="监控中心">
<Menu.Item key="dashboard"><a href="/monitor/dashboard">系统监控</a></Menu.Item>
<SubMenu key="monitor" title={intl.formatMessage({
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 key="vmcore" title="宕机中心">
<Menu.Item key="vmlist"><a href="/vmcore/list">宕机列表</a></Menu.Item>
<Menu.Item key="vmmatch"><a href="/vmcore/match">宕机匹配</a></Menu.Item>
<Menu.Item key="vmconfig"><a href="/vmcore/config">宕机配置</a></Menu.Item>
<SubMenu key="vmcore" title={intl.formatMessage({
id: "menu.vmcore",
})}>
<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 key="diagnose" title="诊断中心">
<Menu.Item key="oscheck"><a href="/diagnose/oscheck">系统健康检查</a></Menu.Item>
<SubMenu key="cpu" title="调度诊断中心">
<Menu.Item key="loadtask"><a href="/diagnose/cpu/">系统负载诊断</a></Menu.Item>
<SubMenu key="diagnose" title={intl.formatMessage({
id: "menu.diagnose",
})}>
<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 key="storage" title="存储诊断中心">
<Menu.Item key="io"><a href="/diagnose/storage/">IO延时诊断</a></Menu.Item>
<SubMenu key="storage" title={intl.formatMessage({
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 key="net" title="网络诊断中心">
<Menu.Item key="network"><a href="/diagnose/net/">网络延时诊断</a></Menu.Item>
<SubMenu key="net" title={intl.formatMessage({
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 key="memory" title="内存诊断中心">
<Menu.Item key="market"><a href="/diagnose/memory/">内存大盘</a></Menu.Item>
<SubMenu key="memory" title={intl.formatMessage({
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 key="journal" title="日志中心">
<Menu.Item key="audit"><a href="/journal/audit">审计日志</a></Menu.Item>
<Menu.Item key="task"><a href="/journal/task">任务日志</a></Menu.Item>
<Menu.Item key="alarm"><a href="/journal/alarm">告警日志</a></Menu.Item>
<SubMenu key="journal" title={intl.formatMessage({
id: "menu.journal",
})}>
<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 key="security" title="安全中心">
<Menu.Item key="List"><a href="/security/List">漏洞中心</a></Menu.Item>
<SubMenu key="security" title={intl.formatMessage({
id: "menu.security",
})}>
<Menu.Item key="List"><a href="/security/List"><FormattedMessage id="menu.security.list" /></a></Menu.Item>
</SubMenu>
</Menu>
<div className={styles.avatarRight}>
@ -77,7 +113,7 @@ const Welcome = () => {
<div className={styles.banner} key={item.key}>
<div className={styles.title}>
<h3>{item.title}</h3>
<a href={item.urls}>点击进入</a>
<a href={item.urls}><FormattedMessage id="pages.click.enter" /></a>
</div>
<div className={styles.img} style={{backgroundColor: item.banner}}></div>
</div>

View File

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

View File

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

View File

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