初始化

This commit is contained in:
2026-03-26 20:18:20 +08:00
commit 120a5b4dfd
368 changed files with 35926 additions and 0 deletions

692
src/locales/langs/en-us.ts Normal file
View File

@@ -0,0 +1,692 @@
const local: App.I18n.Schema = {
system: {
title: 'cn-rdms'
},
common: {
action: 'Action',
add: 'Add',
addSuccess: 'Add Success',
backToHome: 'Back to home',
batchDelete: 'Batch Delete',
cancel: 'Cancel',
close: 'Close',
check: 'Check',
expandColumn: 'Expand Column',
columnSetting: 'Column Setting',
config: 'Config',
confirm: 'Confirm',
delete: 'Delete',
deleteSuccess: 'Delete Success',
confirmDelete: 'Are you sure you want to delete?',
edit: 'Edit',
warning: 'Warning',
error: 'Error',
index: 'Index',
keywordSearch: 'Please enter keyword',
logout: 'Logout',
logoutConfirm: 'Are you sure you want to log out?',
lookForward: 'Coming soon',
modify: 'Modify',
modifySuccess: 'Modify Success',
more: 'More',
noData: 'No Data',
operate: 'Operate',
pleaseCheckValue: 'Please check whether the value is valid',
refresh: 'Refresh',
reset: 'Reset',
search: 'Search',
switch: 'Switch',
tip: 'Tip',
trigger: 'Trigger',
update: 'Update',
updateSuccess: 'Update Success',
userCenter: 'User Center',
yesOrNo: {
yes: 'Yes',
no: 'No'
}
},
request: {
logout: 'Logout user after request failed',
logoutMsg: 'User status is invalid, please log in again',
logoutWithModal: 'Pop up modal after request failed and then log out user',
logoutWithModalMsg: 'User status is invalid, please log in again',
refreshToken: 'The requested token has expired, refresh the token',
tokenExpired: 'The requested token has expired'
},
theme: {
themeSchema: {
title: 'Theme Schema',
light: 'Light',
dark: 'Dark',
auto: 'Follow System'
},
grayscale: 'Grayscale',
colourWeakness: 'Colour Weakness',
layoutMode: {
title: 'Layout Mode',
vertical: 'Vertical Menu Mode',
horizontal: 'Horizontal Menu Mode',
'vertical-mix': 'Vertical Mix Menu Mode',
'horizontal-mix': 'Horizontal Mix menu Mode',
reverseHorizontalMix: 'Reverse first level menus and child level menus position'
},
recommendColor: 'Apply Recommended Color Algorithm',
recommendColorDesc: 'The recommended color algorithm refers to',
themeColor: {
title: 'Theme Color',
primary: 'Primary',
info: 'Info',
success: 'Success',
warning: 'Warning',
error: 'Error',
followPrimary: 'Follow Primary'
},
scrollMode: {
title: 'Scroll Mode',
wrapper: 'Wrapper',
content: 'Content'
},
page: {
animate: 'Page Animate',
mode: {
title: 'Page Animate Mode',
fade: 'Fade',
'fade-slide': 'Slide',
'fade-bottom': 'Fade Zoom',
'fade-scale': 'Fade Scale',
'zoom-fade': 'Zoom Fade',
'zoom-out': 'Zoom Out',
none: 'None'
}
},
fixedHeaderAndTab: 'Fixed Header And Tab',
header: {
height: 'Header Height',
breadcrumb: {
visible: 'Breadcrumb Visible',
showIcon: 'Breadcrumb Icon Visible'
},
multilingual: {
visible: 'Display multilingual button'
},
globalSearch: {
visible: 'Display global search button'
}
},
tab: {
visible: 'Tab Visible',
cache: 'Tag Bar Info Cache',
height: 'Tab Height',
mode: {
title: 'Tab Mode',
chrome: 'Chrome',
button: 'Button'
}
},
sider: {
inverted: 'Dark Sider',
width: 'Sider Width',
collapsedWidth: 'Sider Collapsed Width',
mixWidth: 'Mix Sider Width',
mixCollapsedWidth: 'Mix Sider Collapse Width',
mixChildMenuWidth: 'Mix Child Menu Width'
},
footer: {
visible: 'Footer Visible',
fixed: 'Fixed Footer',
height: 'Footer Height',
right: 'Right Footer'
},
watermark: {
visible: 'Watermark Full Screen Visible',
text: 'Watermark Text',
enableUserName: 'Enable User Name Watermark'
},
themeDrawerTitle: 'Theme Configuration',
pageFunTitle: 'Page Function',
configOperation: {
copyConfig: 'Copy Config',
copySuccessMsg: 'Copy Success, Please replace the variable "themeSettings" in "src/theme/settings.ts"',
resetConfig: 'Reset Config',
resetSuccessMsg: 'Reset Success'
}
},
route: {
login: 'Login',
403: 'No Permission',
404: 'Page Not Found',
500: 'Server Error',
'iframe-page': 'Iframe',
'user-center': 'User Center',
function: 'System Function',
function_tab: 'Tab',
'function_multi-tab': 'Multi Tab',
'function_hide-child': 'Hide Child',
'function_hide-child_one': 'Hide Child',
'function_hide-child_two': 'Two',
'function_hide-child_three': 'Three',
function_request: 'Request',
'function_toggle-auth': 'Toggle Auth',
'function_super-page': 'Super Admin Visible',
system: 'System Management',
system_user: 'User Management',
'system_user-detail': 'User Detail',
system_role: 'Role Management',
system_menu: 'Menu Management',
system_post: 'Post Management',
system_dict: 'Dictionary Management',
exception: 'Exception',
exception_403: '403',
exception_404: '404',
exception_500: '500',
plugin: 'Plugin',
plugin_copy: 'Copy',
plugin_charts: 'Charts',
plugin_charts_echarts: 'ECharts',
plugin_charts_antv: 'AntV',
plugin_charts_vchart: 'VChart',
plugin_editor: 'Editor',
plugin_editor_quill: 'Quill',
plugin_editor_markdown: 'Markdown',
plugin_icon: 'Icon',
plugin_map: 'Map',
plugin_print: 'Print',
plugin_swiper: 'Swiper',
plugin_video: 'Video',
plugin_barcode: 'Barcode',
plugin_pinyin: 'pinyin',
plugin_excel: 'Excel',
plugin_pdf: 'PDF preview',
plugin_gantt: 'Gantt Chart',
plugin_gantt_dhtmlx: 'dhtmlxGantt',
plugin_gantt_vtable: 'VTableGantt',
plugin_typeit: 'Typeit',
plugin_tables: 'Tables',
plugin_tables_vtable: 'VTable'
},
page: {
login: {
common: {
loginOrRegister: 'Login / Register',
userNamePlaceholder: 'Please enter user name',
phonePlaceholder: 'Please enter phone number',
codePlaceholder: 'Please enter verification code',
passwordPlaceholder: 'Please enter password',
confirmPasswordPlaceholder: 'Please enter password again',
codeLogin: 'Verification code login',
confirm: 'Confirm',
back: 'Back',
validateSuccess: 'Verification passed',
loginSuccess: 'Login successfully',
welcomeBack: 'Welcome back, {userName} !'
},
pwdLogin: {
title: 'Password Login',
rememberMe: 'Remember me',
forgetPassword: 'Forget password?',
register: 'Register',
otherAccountLogin: 'Other Account Login',
otherLoginMode: 'Other Login Mode',
superAdmin: 'Super Admin',
admin: 'Admin',
user: 'User'
},
codeLogin: {
title: 'Verification Code Login',
getCode: 'Get verification code',
reGetCode: 'Reacquire after {time}s',
sendCodeSuccess: 'Verification code sent successfully',
imageCodePlaceholder: 'Please enter image verification code'
},
register: {
title: 'Register',
agreement: 'I have read and agree to',
protocol: '《User Agreement》',
policy: '《Privacy Policy》'
},
resetPwd: {
title: 'Reset Password'
},
bindWeChat: {
title: 'Bind WeChat'
}
},
about: {
title: 'About',
introduction:
'CN-RDMS is the frontend application of the internal R&D management platform of 灿能电力. It is used to carry internal business modules, engineering collaboration and management capabilities.',
projectInfo: {
title: 'Project Info',
version: 'Version',
latestBuildTime: 'Latest Build Time',
githubLink: 'Github Link',
previewLink: 'Preview Link'
},
prdDep: 'Production Dependency',
devDep: 'Development Dependency'
},
home: {
branchDesc:
'This page is reserved for the internal dashboard overview of CN-RDMS and can be adjusted according to actual business needs.',
greetingLateNight: 'It is late, {userName}. Take some rest.',
greetingMorning: 'Good morning, {userName}. Another productive day begins.',
greetingNoon: 'Good noon, {userName}. Remember to take a break.',
greetingAfternoon: 'Good afternoon, {userName}. Keep up the momentum.',
greetingEvening: 'Good evening, {userName}. Thanks for your hard work.',
weatherDesc: 'Today is cloudy to clear, 20℃ - 25℃!',
projectCount: 'Project Count',
todo: 'Todo',
message: 'Message',
downloadCount: 'Download Count',
registerCount: 'Register Count',
schedule: 'Work and rest Schedule',
study: 'Study',
work: 'Work',
rest: 'Rest',
entertainment: 'Entertainment',
visitCount: 'Visit Count',
turnover: 'Turnover',
dealCount: 'Deal Count',
projectNews: {
title: 'Project News',
moreNews: 'More News',
desc1: 'CN-RDMS project initialization is complete and the internal management frontend baseline is ready.',
desc2: 'The development environment, routing structure and permission skeleton have been verified.',
desc3: 'Core pages will continue to be replaced with actual internal business modules.',
desc4: 'Project documentation and environment conventions are being refined step by step.',
desc5: 'The current dashboard content is still placeholder data and can be replaced as needed.'
},
creativity: 'Creativity'
},
function: {
tab: {
tabOperate: {
title: 'Tab Operation',
addTab: 'Add Tab',
addTabDesc: 'To user management page',
closeTab: 'Close Tab',
closeCurrentTab: 'Close Current Tab',
closeAboutTab: 'Close "User Management" Tab',
addMultiTab: 'Add Multi Tab',
addMultiTabDesc1: 'To MultiTab page',
addMultiTabDesc2: 'To MultiTab page(with query params)'
},
tabTitle: {
title: 'Tab Title',
changeTitle: 'Change Title',
change: 'Change',
resetTitle: 'Reset Title',
reset: 'Reset'
}
},
multiTab: {
routeParam: 'Route Param',
backTab: 'Back function_tab'
},
toggleAuth: {
toggleAccount: 'Toggle Account',
authHook: 'Auth Hook Function `hasAuth`',
superAdminVisible: 'Super Admin Visible',
adminVisible: 'Admin Visible',
adminOrUserVisible: 'Admin and User Visible'
},
request: {
repeatedErrorOccurOnce: 'Repeated Request Error Occurs Once',
repeatedError: 'Repeated Request Error',
repeatedErrorMsg1: 'Custom Request Error 1',
repeatedErrorMsg2: 'Custom Request Error 2'
}
},
system: {
common: {
status: {
enable: 'Enable',
disable: 'Disable'
}
},
role: {
title: 'Role List',
currentRole: 'Current Role',
resourceAuth: 'Resource Auth',
searchKeyword: 'Keyword',
searchPlaceholder: 'Role name / role key',
searchMode: 'Search Field',
all: 'All',
roleName: 'Role Name',
roleCode: 'Role Key',
roleStatus: 'Role Status',
roleDesc: 'Role Description',
remark: 'Remark',
sort: 'Sort',
createTime: 'Create Time',
menuAuth: 'Menu Auth',
buttonAuth: 'Button Auth',
saveAuth: 'Save Auth',
selectedCount: 'Selected Resources',
disabledTip: 'Disabled roles cannot be assigned menu permissions',
emptyRole: 'Select a role first',
lastAuthSave: 'Last auth save',
unsavedTip: 'Remember to save after changing permissions',
form: {
roleName: 'Please enter role name',
roleCode: 'Please enter role code',
roleStatus: 'Please select role status',
roleDesc: 'Please enter role description',
remark: 'Please enter remark',
sort: 'Please enter sort order',
resourceKeyword: 'Filter the permission tree by resource name',
startTime: 'Start time',
endTime: 'End time'
},
addRole: 'Add Role',
editRole: 'Edit Role',
type: {
system: 'System Built-in',
custom: 'Custom'
}
},
user: {
title: 'User List',
orgTitle: 'Organization',
orgFilterPlaceholder: 'Filter organization',
emptyOrg: 'No organization available',
orgName: 'Organization Name',
orgCode: 'Organization Code',
orgTypeLabel: 'Organization Type',
orgSort: 'Sort',
orgLeader: 'Leader',
orgLeaderTitle: 'Leader Management',
candidateUser: 'Candidate User',
effectiveFrom: 'Effective From',
effectiveUntil: 'Effective Until',
relationRemark: 'Leader Remark',
emptyLeader: 'No leader',
userName: 'User Name',
userGender: 'Gender',
nickName: 'Nick Name',
deptName: 'Organization',
positionName: 'Post',
userPhone: 'Phone Number',
userEmail: 'Email',
userStatus: 'User Status',
userRole: 'User Role',
password: 'Password',
newPassword: 'New Password',
confirmPassword: 'Confirm Password',
remark: 'Remark',
resignedAt: 'Resigned At',
resignedState: 'Resigned Status',
loginDate: 'Last Login',
createTime: 'Created Time',
form: {
userName: 'Please enter user name',
userGender: 'Please select gender',
nickName: 'Please enter nick name',
orgName: 'Please enter organization name',
orgCode: 'Please enter organization code',
orgTypeLabel: 'Please select organization type',
orgSort: 'Please enter sort',
parentOrg: 'Please select parent organization',
candidateUser: 'Please select leader',
effectiveFrom: 'Please select effective start time',
effectiveUntil: 'Please select effective end time',
relationRemark: 'Please enter leader remark',
deptName: 'Please select organization',
positionName: 'Please select post',
userPhone: 'Please enter phone number',
userEmail: 'Please enter email',
userStatus: 'Please select user status',
userRole: 'Please select user role',
password: 'Please enter password',
newPassword: 'Please enter new password',
confirmPassword: 'Please enter password again',
remark: 'Please enter remark',
resignedAt: 'Please select resigned time'
},
addUser: 'Add User',
editUser: 'Edit User',
addOrg: 'Add Organization',
addChildOrg: 'Add',
editOrg: 'Edit Organization',
addLeader: 'Add Leader',
editLeader: 'Edit Leader',
resetPassword: 'Reset Password',
resignUser: 'Resign User',
adjustResignUser: 'Adjust Resignation',
restoreUser: 'Restore User',
topLevelOrg: 'Top Level Organization',
sections: {
basicInfo: 'Basic Information',
organizationInfo: 'Organization And Roles',
contactInfo: 'Contact Information'
},
orgType: {
company: 'Company',
dept: 'Department',
direction: 'Direction',
team: 'Team'
},
gender: {
unknown: 'Unknown',
male: 'Male',
female: 'Female'
},
resignedStateEnum: {
active: 'Active',
pending: 'Pending Resignation',
resigned: 'Resigned'
}
},
menu: {
home: 'Home',
title: 'Menu List',
id: 'ID',
parentId: 'Parent ID',
menuType: 'Menu Type',
menuName: 'Menu Name',
permission: 'Permission',
routeName: 'Route Name',
routePath: 'Route Path',
routeKind: 'Route Kind',
routePropsJson: 'Route Props JSON',
pageResource: 'Page Resource',
component: 'Component Path',
componentName: 'Component Name',
iframeUrl: 'Iframe URL',
externalUrl: 'External URL',
redirectTarget: 'Redirect Target',
pathParam: 'Path Param',
layout: 'Layout Component',
page: 'Page Component',
i18nKey: 'I18n Key',
icon: 'Icon',
localIcon: 'Local Icon',
iconTypeTitle: 'Icon Type',
order: 'Order',
constant: 'Constant',
keepAlive: 'Keep Alive',
href: 'Href',
hideInMenu: 'Hide In Menu',
activeMenu: 'Active Menu',
multiTab: 'Multi Tab',
fixedIndexInTab: 'Fixed Index In Tab',
query: 'Query Params',
button: 'Button',
buttonCode: 'Button Code',
buttonDesc: 'Button Desc',
menuStatus: 'Menu Status',
visible: 'Visible',
alwaysShow: 'Always Show',
createTime: 'Create Time',
topLevel: 'Top Level Menu',
sections: {
basic: 'Basic Information',
route: 'Route Information',
display: 'Display Options'
},
form: {
home: 'Please select home',
menuType: 'Please select menu type',
parentId: 'Please select parent menu',
menuName: 'Please enter menu name',
permission: 'Please enter permission',
routeName: 'Please enter route name',
routePath: 'Please enter route path',
path: 'Please enter route path',
component: 'Please enter component path',
componentName: 'Please enter component name',
routeKind: 'Please select route kind',
pageResource: 'Please select page resource',
pageResourceParentMismatch: 'The selected page resource does not match the current parent menu path',
routePropsJson: 'Please enter a valid JSON string',
routePropsJsonHint: 'For example {"url":"https://example.com"}',
iframeUrl: 'Please enter iframe URL',
externalUrl: 'Please enter external URL',
redirectTarget: 'Please enter redirect target',
pathParam: 'Please enter path param',
page: 'Please select page component',
layout: 'Please select layout component',
i18nKey: 'Please enter i18n key',
icon: 'Please enter iconify name',
localIcon: 'Please enter local icon name',
order: 'Please enter order',
sort: 'Please enter sort order',
keepAlive: 'Please select whether to cache route',
href: 'Please enter href',
hideInMenu: 'Please select whether to hide menu',
activeMenu: 'Please select route name of the highlighted menu',
multiTab: 'Please select whether to support multiple tabs',
fixedInTab: 'Please select whether to fix in the tab',
fixedIndexInTab: 'Please enter the index fixed in the tab',
queryKey: 'Please enter route parameter Key',
queryValue: 'Please enter route parameter Value',
button: 'Please select whether it is a button',
buttonCode: 'Please enter button code',
buttonDesc: 'Please enter button description',
menuStatus: 'Please select menu status'
},
tips: {
routeKind: 'Choose the route kind that matches the current dropdown option',
routeKindSummary:
'Most backend business menus should use "Page Route". Only switch to another type when you are building a top-level single page, iframe page, external link, or redirect route.',
routeKindItems: {
directory:
'Used only for menu grouping and does not render a real page. Typical for a parent directory such as "System Management".',
view: 'Use this for normal business pages such as Role Management, Menu Management, and Dictionary Management.',
single:
'Used when the page should be displayed as a top-level single page instead of being shown inside a directory content area.',
iframe: 'Used when the page content is embedded by iframe. You need to provide url in Route Props JSON.',
external:
'Used when clicking the menu should open an external website instead of rendering a page in this system.',
redirect: 'Used only as a redirect route. Normal business menus usually should not choose this.'
},
routePath:
'Fill in the last segment of the access path. For Role Management, the full path is /system/role, so this field is usually role.',
pageResource:
'Page routes should select a page resource from the frontend whitelist. For example, Role Management maps to /system/role and view.system_role.',
component:
'The component field should use the frontend page-resource whitelist key, not a src file path. For Role Management, use or select view.system_role.'
},
addMenu: 'Add Menu',
editMenu: 'Edit Menu',
addChildMenu: 'Add Child Menu',
type: {
directory: 'Directory',
menu: 'Menu',
button: 'Button'
},
iconType: {
iconify: 'Iconify Icon',
local: 'Local Icon'
},
routeKindEnum: {
directory: 'Directory Route',
view: 'Page Route',
single: 'Top-level Single Page',
iframe: 'Iframe Page',
external: 'External Link',
redirect: 'Redirect Route'
}
},
dict: {
typeTitle: 'Dictionary Type',
dataTitle: 'Dictionary Data',
currentType: 'Current Type',
emptyType: 'Select a dictionary type first',
typeSearchPlaceholder: 'Dictionary Type / Type Code',
dictName: 'Dictionary Name',
dictCode: 'Dictionary Code',
dictStatus: 'Dictionary Status',
dictLabel: 'Dictionary Label',
dictValue: 'Dictionary Value',
sort: 'Sort',
remark: 'Remark',
form: {
dictName: 'Please enter dictionary name',
dictCode: 'Please enter dictionary code',
dictStatus: 'Please select dictionary status',
dictLabel: 'Please enter dictionary label',
dictValue: 'Please enter dictionary value',
sort: 'Please enter sort',
remark: 'Please enter remark'
},
addType: 'Add Dictionary Type',
editType: 'Edit Dictionary Type',
addData: 'Add Dictionary Data',
editData: 'Edit Dictionary Data'
}
}
},
form: {
required: 'Cannot be empty',
userName: {
required: 'Please enter user name',
invalid: 'User name format is incorrect'
},
phone: {
required: 'Please enter phone number',
invalid: 'Phone number format is incorrect'
},
pwd: {
required: 'Please enter password',
invalid: '6-18 characters, including letters, numbers, and underscores'
},
confirmPwd: {
required: 'Please enter password again',
invalid: 'The two passwords are inconsistent'
},
code: {
required: 'Please enter verification code',
invalid: 'Verification code format is incorrect'
},
email: {
required: 'Please enter email',
invalid: 'Email format is incorrect'
}
},
dropdown: {
closeCurrent: 'Close Current',
closeOther: 'Close Other',
closeLeft: 'Close Left',
closeRight: 'Close Right',
closeAll: 'Close All'
},
icon: {
themeConfig: 'Theme Configuration',
themeSchema: 'Theme Schema',
lang: 'Switch Language',
fullscreen: 'Fullscreen',
fullscreenExit: 'Exit Fullscreen',
reload: 'Reload Page',
collapse: 'Collapse Menu',
expand: 'Expand Menu',
pin: 'Pin',
unpin: 'Unpin'
},
datatable: {
itemCount: 'Total {total} items'
}
};
export default local;