i18n: pages/layout and fix i18n bug

This commit is contained in:
a20070322 2024-05-09 15:24:14 +08:00
parent 2b7396dcc5
commit 73735e1a1d
12 changed files with 159 additions and 119 deletions

View File

@ -18,7 +18,7 @@ export default {
nameLabel: 'Name:', nameLabel: 'Name:',
readWrite: 'Read/Write', readWrite: 'Read/Write',
read: 'Read', read: 'Read',
path: 'Path: {{ item.source }}(Host) => {{ item.destination }}(Container)', path: 'Path: {source}(Host) => {destination}(Container)',
networkPort: 'Network Port', networkPort: 'Network Port',
bridgeMode: 'Bridge Mode:', bridgeMode: 'Bridge Mode:',
gateway: 'Gateway', gateway: 'Gateway',
@ -33,41 +33,7 @@ export default {
edit: 'Edit', edit: 'Edit',
logs: 'Logs', logs: 'Logs',
forceDelete: 'Force delete', forceDelete: 'Force delete',
delete: 'Delete', delete: 'Delete'
name_1: 'Name',
containerId_1: 'Container ID',
imageId_1: 'Image ID',
view_1: 'View',
all_1: 'All',
running_1: 'Running',
search_1: 'Search',
seconds_1: 's seconds',
refreshCountdown_1: 'Refresh countdown',
containerName_1: 'Container Name:',
containerIdLabel_1: 'Container ID:',
image_1: 'Image:',
imageIdLabel_1: 'Image ID:',
containerNameTag_1: 'Container Name Tag',
mount_1: 'Mount',
nameLabel_1: 'Name:',
readWrite_1: 'Read/Write',
read_1: 'Read',
path_1: 'Path: {{ item.source }} (Host) => {{ item.destination }} (Container)',
networkPort_1: 'Network Port',
bridgeMode_1: 'Bridge Mode:',
gateway_1: 'Gateway',
viewLogs_1: 'Click to view logs',
enterTerminal_1: 'Enter terminal when container is running',
stop_1: 'Stop',
restart_1: 'Restart',
start_1: 'Start',
modifyAndRun_1: 'Modify container configuration and run again',
rebuild_1: 'Rebuild',
editBasicParams_1: 'Edit some basic parameters of the container',
edit_1: 'Edit',
logs_1: 'Logs',
forceDelete_1: 'Force delete',
delete_1: 'Delete'
}, },
p: { p: {
noData: 'No data available', noData: 'No data available',
@ -87,24 +53,6 @@ export default {
confirmStart: 'Are you sure you want to start the current container?', confirmStart: 'Are you sure you want to start the current container?',
systemPrompt: 'System Prompt', systemPrompt: 'System Prompt',
confirm: 'Confirm', confirm: 'Confirm',
cancel: 'Cancel', cancel: 'Cancel'
noData_1: 'No data available',
configureContainer_1: 'Configure Container',
serialNumber_1: 'Serial Number',
containerId_1: 'Container ID',
imageId_1: 'Image ID',
status_1: 'Status',
port_1: 'Port',
tag_1: 'Tag',
command_1: 'Command',
createTime_1: 'Creation Time',
operation_1: 'Operation',
confirmDelete_1: 'Are you sure you want to delete the current container?',
confirmStop_1: 'Are you sure you want to stop the current container?',
confirmRestart_1: 'Are you sure you want to restart the current container?',
confirmStart_1: 'Are you sure you want to start the current container?',
systemPrompt_1: 'System Prompt',
confirm_1: 'Confirm',
cancel_1: 'Cancel'
} }
} }

View File

@ -1,14 +1,15 @@
import about from './about.ts' import about from './about'
import contentTab from './content-tab.ts' import contentTab from './content-tab'
import defaultBg from './default-bg.ts' import defaultBg from './default-bg'
import defaultIndex from './default-index.ts' import defaultIndex from './default-index'
import ipAccess from './ipAccess.ts' import ipAccess from './ipAccess'
import loading from './loading.ts' import loading from './loading'
import management from './management.ts' import management from './management'
import myWorkspace from './my-workspace.ts' import myWorkspace from './my-workspace'
import overview from './overview.ts' import overview from './overview'
import sideMenu from './side-menu.ts' import sideMenu from './side-menu'
import userLog from './user-log.ts' import userHeader from './user-header'
import userLog from './user-log'
export default { export default {
about, about,
@ -21,5 +22,6 @@ export default {
myWorkspace, myWorkspace,
overview, overview,
sideMenu, sideMenu,
userHeader,
userLog userLog
} }

View File

@ -8,7 +8,7 @@ export default {
p: { p: {
welcome: 'Welcome [', welcome: 'Welcome [',
systemUsage: '] You are using this system', systemUsage: '] You are using this system',
manageWorkspaces: 'You can manage {{ (myWorkspaceList && myWorkspaceList.length) || 0 }} workspaces', manageWorkspaces: 'You can manage {count} workspaces',
demoAccount: 'Demo account', demoAccount: 'Demo account',
superuser: 'Super administrator', superuser: 'Super administrator',
admin: 'Administrator', admin: 'Administrator',
@ -34,35 +34,6 @@ export default {
localScript: 'Local script', localScript: 'Local script',
node: 'Node', node: 'Node',
cluster: 'Cluster', cluster: 'Cluster',
dynamicFile: 'Dynamic file', dynamicFile: 'Dynamic file'
welcome_1: 'Welcome [',
systemUsage_1: '] You are using this system',
manageWorkspaces_1: 'You can manage {{ (myWorkspaceList && myWorkspaceList.length) || 0 }} workspaces',
demoAccount_1: 'Demo Account',
superuser_1: 'Superuser',
admin_1: 'Admin',
normalUser_1: 'Normal User',
refreshData_1: 'Refresh Data',
systemInfo_1: 'System Info',
dataStatistics_1: 'Data Statistics',
relatedDataStatistics_1: 'Related Data Statistics for the Current Workspace',
buildLog_1: 'Build Log',
triggeredBuilds_1: 'Build Records Triggered by You in the Current Workspace',
notYetBuilt_1: 'You Have Not Built Yet',
loginLog_1: 'Login Log',
notYetLoggedIn_1: 'You Have Not Logged In Yet',
allOperationLog_1: 'All Your Operation Logs in the System',
notYetPerformedOperations_1: 'You Have Not Performed Any Operations Yet',
openSourceInfo_1: 'Open Source Information',
logicNode_1: 'Logic Node',
nodeProject_1: 'Node Project',
nodeScript_1: 'Node Script',
projectDistribution_1: 'Project Distribution',
terminal_1: 'Terminal',
script_1: 'Script',
localScript_1: 'Local Script',
node_1: 'Node',
cluster_1: 'Cluster',
dynamicFile_1: 'Dynamic File'
} }
} }

View File

@ -0,0 +1,117 @@
export default {
c: {
unConfigured: 'Unconfigured',
bracketRight: '】',
bracketLeft: '【',
securityManagement: 'Security Management',
operationLog: 'Operation Log',
oldPassword: 'Please enter your current password',
newPassword: 'Please enter your new password',
confirmPassword: 'Please confirm your new password',
verificationCode: 'Verification Code',
twoStepVerificationCode: 'Two-Step Verification Code',
twoStepVerificationApp: 'Two-Step Verification App',
nickname: 'Nickname',
emailAddress: 'Email Address',
emailVerificationCode: 'Email Verification Code',
dingNotificationAddress: 'DingTalk Notification Address',
enterpriseWeChatNotificationAddress: 'Enterprise WeChat Notification Address',
lightTheme: 'Light Theme',
darkTheme: 'Dark Theme',
securityReminder: 'Security Reminder',
nicknameLength: 'Nickname should be 2-10 characters long',
passwordLength: 'Password should be 6-20 characters long',
systemPrompt: 'System Prompt',
confirm: 'Confirm',
cancel: 'Cancel',
logoutSuccess: 'Logout successful'
},
p: {
workspaceName: 'Workspace Name:',
groupName: 'Group Name:',
clusterName: 'Cluster Name:',
switchWorkspace: 'Switch Workspace',
switchCluster: 'Switch Cluster',
userProfile: 'User Profile',
personalConfiguration: 'Personal Configuration',
logout: 'Logout',
switchAccount: 'Switch Account',
completeLogout: 'Complete Logout',
changePassword: 'Change Password',
originalPassword: 'Original Password',
newPassword: 'New Password',
confirmPassword: 'Confirm Password',
confirmReset: 'Confirm Reset',
twoStepVerification: 'Two-Step Verification',
prompt: 'Prompt',
mfaKey:
'This will not be displayed after binding. It is strongly recommended to save this QR code or the MFA key below.',
pleaseScanQRCodeAndBindToken:
'Please use the app to scan the QR code to bind the token, then enter the verification code to confirm the binding.',
currentStatus: 'Current Status',
opening: 'Opening',
closing: 'Closing',
qrCode: 'QR Code',
confirmBind: 'Confirm Bind',
confirmClose: 'Confirm Close',
enableMFA: 'Enable MFA',
editUserProfile: 'Edit User Profile',
temporaryToken: 'Temporary Token',
permanentToken: 'Permanent Token',
sendVerificationCode: 'Send Verification Code',
personalConfigArea: 'Personal Configuration Area',
theseConfigsOnlyEffectiveInCurrentBrowser:
'These configuration settings will only be effective in the current browser.',
clearingBrowserCacheWillRestoreDefaults: 'Clearing the browser cache will restore default settings.',
menuConfig: 'Menu Configuration',
yes: 'Yes',
no: 'No',
expandMultipleAtOnce: 'Expand Multiple at Once',
fullScreenLog: 'Full Screen Log',
fullScreen: 'Full Screen',
notFullScreen: 'Not Full Screen',
viewLogInFullScreen: 'View Log in Full Screen',
contentTheme: 'Content Theme',
followSystem: 'Follow System',
contentAreaThemeSwitch: 'Content Area Theme Switch',
menuTheme: 'Menu Theme',
leftMenuThemeSwitch: 'Left Menu Theme Switch',
compactMode: 'Compact Mode',
compact: 'Compact',
loose: 'Loose',
fontSpacingAdjustment: 'Font Spacing Adjustment',
onlyEffectiveInDarkMode: 'Only Effective in Dark Mode',
language: 'Language',
chinese: 'Chinese',
forYourAccountSecurityTheSystemRequiresTwoStepVerificationToBeEnabledToEnsureAccountSafety:
'For the security of your account, the system requires two-step verification to be enabled to ensure account safety.',
enableImmediately: 'Enable immediately',
nickname: 'Please enter a nickname',
twoStepVerificationCode: 'Please enter the two-step verification code',
verificationCode6: 'Verification code 6 is pure digits',
closeOperationGuide: 'Close the page operation guide and navigation',
openOperationGuide: 'Enable the page operation guide and navigation',
multipleMenusExpand: 'Multiple menus can be expanded at the same time',
singleMenuExpand: 'Only one menu can be expanded at a time',
autoExpandContent: 'The page content automatically expands to appear on the screen scrollbar',
fullScreen_1: 'Full screen for the page, height 100%. Partial areas can be scrolled',
scrollableContent: 'The page content will have a scrollbar',
hiddenScrollbar:
'Hide the scrollbar. Vertical scrolling reminder: scroll wheel, horizontal scrolling: Shift + scroll wheel',
logDialogFullScreen: 'The log dialog will open in full screen',
logDialogNonFullScreen: 'The log dialog will open in non-full screen',
compactMode_1: 'Enable compact mode for the page',
looseMode: 'Enable loose mode for the page',
resetOperationGuideSuccess: 'Reset the page operation guide and navigation successfully',
quitConfirmation:
'Are you sure you want to completely exit the system? Completely exiting will log you out and clear the browser cache',
switchAccountConfirmation: 'Are you sure you want to exit and switch to another account to log in?',
quitSystemConfirmation: 'Are you sure you want to exit the system?',
passwordsNotMatch: 'The two passwords do not match...',
emailAddress: 'Please enter an email address',
clusterNotConfigured: 'The cluster address has not been configured yet, and the cluster cannot be switched',
verificationCodeRequired: 'A verification code is required. It will take effect after confirmation of binding',
disableTwoStepVerificationConfirmation:
'Are you sure you want to disable two-step verification? Disabling it will affect the security of your account, and existing mfa keys will be invalidated'
}
}

View File

@ -1,6 +1,6 @@
import list from './list.ts' import list from './list'
import log from './log.ts' import log from './log'
import operateLog from './operate-log.ts' import operateLog from './operate-log'
export default { export default {
list, list,

View File

@ -18,7 +18,7 @@ export default {
nameLabel: '名称:', nameLabel: '名称:',
readWrite: '读写', readWrite: '读写',
read: '读', read: '读',
path: '路径:{{ item.source }}(宿主机) => {{ item.destination }}(容器)', path: '路径:{source}(宿主机) => {destination}(容器)',
networkPort: '网络端口', networkPort: '网络端口',
bridgeMode: '桥接模式:', bridgeMode: '桥接模式:',
gateway: '网关', gateway: '网关',

View File

@ -1,15 +1,15 @@
import about from './about.ts' import about from './about'
import contentTab from './content-tab.ts' import contentTab from './content-tab'
import defaultBg from './default-bg.ts' import defaultBg from './default-bg'
import defaultIndex from './default-index.ts' import defaultIndex from './default-index'
import ipAccess from './ipAccess.ts' import ipAccess from './ipAccess'
import loading from './loading.ts' import loading from './loading'
import management from './management.ts' import management from './management'
import myWorkspace from './my-workspace.ts' import myWorkspace from './my-workspace'
import overview from './overview.ts' import overview from './overview'
import sideMenu from './side-menu.ts' import sideMenu from './side-menu'
import userHeader from './user-header.ts' import userHeader from './user-header'
import userLog from './user-log.ts' import userLog from './user-log'
export default { export default {
about, about,

View File

@ -6,7 +6,7 @@ export default {
p: { p: {
welcome: '欢迎【', welcome: '欢迎【',
systemUsage: '】您使用本系统', systemUsage: '】您使用本系统',
manageWorkspaces: '可以管理{{ (myWorkspaceList && myWorkspaceList.length) || 0 }}个工作空间', manageWorkspaces: '可以管理{count}个工作空间',
demoAccount: '演示账号', demoAccount: '演示账号',
superuser: '超级管理员', superuser: '超级管理员',
admin: '管理员', admin: '管理员',

View File

@ -403,7 +403,7 @@
{{ $tl('c.nameLabel') }}{{ item.name }} {{ $tl('c.nameLabel') }}{{ item.name }}
<a-tag>{{ item.rw ? $tl('c.readWrite') : $tl('c.read') }}</a-tag> <a-tag>{{ item.rw ? $tl('c.readWrite') : $tl('c.read') }}</a-tag>
</p> </p>
<p>{{ $tl('c.path') }}</p> <p>{{ $tl('c.path', { source: item.source, destination: item.destination }) }}</p>
<a-divider></a-divider> <a-divider></a-divider>
</div> </div>
</template> </template>

View File

@ -21,7 +21,7 @@
<a-switch <a-switch
v-model:checked="pruneForm.dangling" v-model:checked="pruneForm.dangling"
:checked-children="$tl('p.floating')" :checked-children="$tl('p.floating')"
un-checked-children="非{{$tl('p.floating')}}" :un-checked-children="$tl('p.nonFloating')"
/> />
</a-form-item> </a-form-item>
<a-form-item <a-form-item

View File

@ -2,7 +2,9 @@
<div> <div>
<a-page-header :back-icon="false"> <a-page-header :back-icon="false">
<template #title> {{ $tl('p.welcome') }}{{ getUserInfo.name }}{{ $tl('p.systemUsage') }}</template> <template #title> {{ $tl('p.welcome') }}{{ getUserInfo.name }}{{ $tl('p.systemUsage') }}</template>
<template #subTitle>{{ $tl('p.manageWorkspaces') }} </template> <template #subTitle>
{{ $tl('p.manageWorkspaces', { count: (myWorkspaceList && myWorkspaceList.length) || 0 }) }}
</template>
<template #tags> <template #tags>
<a-tag color="blue"> <a-tag color="blue">
<template v-if="getUserInfo.demoUser">{{ $tl('p.demoAccount') }}</template> <template v-if="getUserInfo.demoUser">{{ $tl('p.demoAccount') }}</template>

View File

@ -5,7 +5,7 @@
<a-button v-if="mode === 'normal'" type="dashed" class="workspace jpom-workspace btn-group-item"> <a-button v-if="mode === 'normal'" type="dashed" class="workspace jpom-workspace btn-group-item">
<div class="workspace-name"> <div class="workspace-name">
<a-tooltip <a-tooltip
:title="`${$tl('p.workspaceName')}${selectWorkspace.name} ${$tl('p.groupName')}${selectWorkspace.group || '${$tl('c.unConfigured')}'}${$tl('c.bracketRight')}`" :title="`${$tl('p.workspaceName')}${selectWorkspace.name} ${$tl('p.groupName')}${selectWorkspace.group || $tl('c.unConfigured')}${$tl('c.bracketRight')}`"
placement="bottom" placement="bottom"
> >
<SwitcherOutlined /> <SwitcherOutlined />
@ -421,7 +421,7 @@
<a-switch <a-switch
:checked-children="$tl('p.fullScreen')" :checked-children="$tl('p.fullScreen')"
:checked="fullscreenViewLog" :checked="fullscreenViewLog"
un-checked-children="非{{$tl('p.fullScreen')}}" :un-checked-children="$tl('p.notFullScreen')"
@click="toggleFullscreenViewLog" @click="toggleFullscreenViewLog"
/> />
{{ $tl('p.viewLogInFullScreen') }} {{ $tl('p.viewLogInFullScreen') }}