diff --git a/ui/src/components/header/HeaderNotice.vue b/ui/src/components/header/HeaderNotice.vue index 897c88c323c..ab9247e4202 100644 --- a/ui/src/components/header/HeaderNotice.vue +++ b/ui/src/components/header/HeaderNotice.vue @@ -27,9 +27,9 @@ - + - Clear All + {{ $t('label.clear.list') }} diff --git a/ui/src/components/header/TranslationMenu.vue b/ui/src/components/header/TranslationMenu.vue index a36520857d9..7d49735628c 100644 --- a/ui/src/components/header/TranslationMenu.vue +++ b/ui/src/components/header/TranslationMenu.vue @@ -93,6 +93,10 @@ export default { hi } }, + mounted () { + this.language = Vue.ls.get('LOCALE') || 'en' + this.setLocale(this.language) + }, methods: { moment, onClick (e) { @@ -107,7 +111,7 @@ export default { this.$i18n.locale = localeValue this.language = localeValue moment.locale(localeValue) - Vue.ls.set('current_locale', localeValue) + Vue.ls.set('LOCALE', localeValue) } } } diff --git a/ui/src/components/header/UserMenu.vue b/ui/src/components/header/UserMenu.vue index 1f33a0fb229..b697f2917ea 100644 --- a/ui/src/components/header/UserMenu.vue +++ b/ui/src/components/header/UserMenu.vue @@ -29,20 +29,20 @@ - Profile + {{ $t('label.profilename') }} - Help + {{ $t('label.help') }} - Logout + {{ $t('label.logout') }} diff --git a/ui/src/components/view/DedicateData.vue b/ui/src/components/view/DedicateData.vue index 9c5a93a9f3b..3adc7c7af76 100644 --- a/ui/src/components/view/DedicateData.vue +++ b/ui/src/components/view/DedicateData.vue @@ -169,12 +169,12 @@ export default { }).then(response => { this.$pollJob({ jobId: response.releasededicatedzoneresponse.jobid, - successMessage: `Successfully released dedicated zone`, + successMessage: this.$t('message.dedicated.zone.released'), successMethod: () => { this.parentFetchData() this.dedicatedDomainId = null this.$store.dispatch('AddAsyncJob', { - title: 'Successfully released dedicated zone', + title: this.$t('message.dedicated.zone.released'), jobid: response.releasededicatedzoneresponse.jobid, status: 'progress' }) @@ -183,7 +183,7 @@ export default { errorMethod: () => { this.parentFetchData() }, - loadingMessage: `Releasing dedicated zone...`, + loadingMessage: this.$t('message.releasing.dedicated.zone'), catchMessage: 'Error encountered while fetching async job result', catchMethod: () => { this.parentFetchData() @@ -199,12 +199,12 @@ export default { }).then(response => { this.$pollJob({ jobId: response.releasededicatedpodresponse.jobid, - successMessage: `Successfully released dedicated pod`, + successMessage: this.$t('message.pod.dedication.released'), successMethod: () => { this.parentFetchData() this.dedicatedDomainId = null this.$store.dispatch('AddAsyncJob', { - title: 'Successfully released dedicated pod', + title: this.$t('message.pod.dedication.released'), jobid: response.releasededicatedpodresponse.jobid, status: 'progress' }) @@ -213,7 +213,7 @@ export default { errorMethod: () => { this.parentFetchData() }, - loadingMessage: `Releasing dedicated pod...`, + loadingMessage: this.$t('message.releasing.dedicated.pod'), catchMessage: 'Error encountered while fetching async job result', catchMethod: () => { this.parentFetchData() @@ -229,12 +229,12 @@ export default { }).then(response => { this.$pollJob({ jobId: response.releasededicatedclusterresponse.jobid, - successMessage: `Successfully released dedicated cluster`, + successMessage: this.$t('message.cluster.dedication.released'), successMethod: () => { this.parentFetchData() this.dedicatedDomainId = null this.$store.dispatch('AddAsyncJob', { - title: 'Successfully released dedicated cluster', + title: this.$t('message.cluster.dedication.released'), jobid: response.releasededicatedclusterresponse.jobid, status: 'progress' }) @@ -243,7 +243,7 @@ export default { errorMethod: () => { this.parentFetchData() }, - loadingMessage: `Releasing dedicated cluster...`, + loadingMessage: this.$t('message.releasing.dedicated.cluster'), catchMessage: 'Error encountered while fetching async job result', catchMethod: () => { this.parentFetchData() @@ -259,12 +259,12 @@ export default { }).then(response => { this.$pollJob({ jobId: response.releasededicatedhostresponse.jobid, - successMessage: `Successfully released dedicated host`, + successMessage: this.$t('message.host.dedication.released'), successMethod: () => { this.parentFetchData() this.dedicatedDomainId = null this.$store.dispatch('AddAsyncJob', { - title: 'Successfully released dedicated host', + title: this.$t('message.host.dedication.released'), jobid: response.releasededicatedhostresponse.jobid, status: 'progress' }) @@ -273,7 +273,7 @@ export default { errorMethod: () => { this.parentFetchData() }, - loadingMessage: `Releasing dedicated host...`, + loadingMessage: this.$t('message.releasing.dedicated.host'), catchMessage: 'Error encountered while fetching async job result', catchMethod: () => { this.parentFetchData() diff --git a/ui/src/components/view/DedicateModal.vue b/ui/src/components/view/DedicateModal.vue index 73b0e431582..a518520d8d0 100644 --- a/ui/src/components/view/DedicateModal.vue +++ b/ui/src/components/view/DedicateModal.vue @@ -90,14 +90,14 @@ export default { }).then(response => { this.$pollJob({ jobId: response.dedicatezoneresponse.jobid, - successMessage: `Successfully dedicated zone`, + successMessage: this.$t('label.zone.dedicated'), successMethod: () => { this.parentFetchData() this.fetchParentData() this.dedicatedDomainId = this.domainId this.dedicatedDomainModal = false this.$store.dispatch('AddAsyncJob', { - title: 'Successfully dedicated zone', + title: this.$t('label.zone.dedicated'), jobid: response.dedicatezoneresponse.jobid, description: `Domain ID: ${this.dedicatedDomainId}`, status: 'progress' @@ -109,7 +109,7 @@ export default { this.fetchParentData() this.dedicatedDomainModal = false }, - loadingMessage: `Dedicating zone...`, + loadingMessage: this.$t('message.dedicating.zone'), catchMessage: 'Error encountered while fetching async job result', catchMethod: () => { this.parentFetchData() @@ -134,14 +134,14 @@ export default { }).then(response => { this.$pollJob({ jobId: response.dedicatepodresponse.jobid, - successMessage: `Successfully dedicated pod`, + successMessage: this.$t('label.pod.dedicated'), successMethod: () => { this.parentFetchData() this.fetchParentData() this.dedicatedDomainId = this.domainId this.dedicatedDomainModal = false this.$store.dispatch('AddAsyncJob', { - title: 'Successfully dedicated pod', + title: this.$t('label.pod.dedicated'), jobid: response.dedicatepodresponse.jobid, description: `Domain ID: ${this.dedicatedDomainId}`, status: 'progress' @@ -153,7 +153,7 @@ export default { this.fetchParentData() this.dedicatedDomainModal = false }, - loadingMessage: `Dedicating pod...`, + loadingMessage: this.$t('message.dedicating.pod'), catchMessage: 'Error encountered while fetching async job result', catchMethod: () => { this.parentFetchData() @@ -178,14 +178,14 @@ export default { }).then(response => { this.$pollJob({ jobId: response.dedicateclusterresponse.jobid, - successMessage: `Successfully dedicated cluster`, + successMessage: this.$t('message.cluster.dedicated'), successMethod: () => { this.parentFetchData() this.fetchParentData() this.dedicatedDomainId = this.domainId this.dedicatedDomainModal = false this.$store.dispatch('AddAsyncJob', { - title: 'Successfully dedicated cluster', + title: this.$t('message.cluster.dedicated'), jobid: response.dedicateclusterresponse.jobid, description: `Domain ID: ${this.dedicatedDomainId}`, status: 'progress' @@ -197,7 +197,7 @@ export default { this.fetchParentData() this.dedicatedDomainModal = false }, - loadingMessage: `Dedicating cluster...`, + loadingMessage: this.$t('message.dedicating.cluster'), catchMessage: 'Error encountered while fetching async job result', catchMethod: () => { this.parentFetchData() @@ -222,14 +222,14 @@ export default { }).then(response => { this.$pollJob({ jobId: response.dedicatehostresponse.jobid, - successMessage: `Successfully dedicated host`, + successMessage: this.$t('message.host.dedicated'), successMethod: () => { this.parentFetchData() this.fetchParentData() this.dedicatedDomainId = this.domainId this.dedicatedDomainModal = false this.$store.dispatch('AddAsyncJob', { - title: 'Successfully dedicated host', + title: this.$t('message.host.dedicated'), jobid: response.dedicatehostresponse.jobid, description: `Domain ID: ${this.dedicatedDomainId}`, status: 'progress' @@ -241,7 +241,7 @@ export default { this.fetchParentData() this.dedicatedDomainModal = false }, - loadingMessage: `Dedicating host...`, + loadingMessage: this.$t('message.dedicating.host'), catchMessage: 'Error encountered while fetching async job result', catchMethod: () => { this.parentFetchData() diff --git a/ui/src/components/view/DetailSettings.vue b/ui/src/components/view/DetailSettings.vue index d7e049f0b4e..0b02dbb7ef5 100644 --- a/ui/src/components/view/DetailSettings.vue +++ b/ui/src/components/view/DetailSettings.vue @@ -20,7 +20,7 @@ + :message="$t('message.action.settings.warning.vm.running')" />
{{ $t('label.add.setting') }} @@ -31,14 +31,14 @@ :filterOption="filterOption" :value="newKey" :dataSource="Object.keys(detailOptions)" - placeholder="Name" + :placeholder="$t('label.name')" @change="e => onAddInputChange(e, 'newKey')" /> {{ $t('label.add.setting') }} {{ $t('label.cancel') }} diff --git a/ui/src/components/view/DetailsTab.vue b/ui/src/components/view/DetailsTab.vue index be553acc3f1..250eace5e54 100644 --- a/ui/src/components/view/DetailsTab.vue +++ b/ui/src/components/view/DetailsTab.vue @@ -21,7 +21,7 @@ :dataSource="$route.meta.details">
- {{ item === 'service' ? $t('label.supportedservices') : $t('label.' + item) }} + {{ item === 'service' ? $t('label.supportedservices') : $t('label.' + String(item).toLowerCase()) }}
diff --git a/ui/src/components/view/FormView.vue b/ui/src/components/view/FormView.vue index ef4e5a97ca2..485ad3958ed 100644 --- a/ui/src/components/view/FormView.vue +++ b/ui/src/components/view/FormView.vue @@ -41,7 +41,7 @@ @@ -50,7 +50,7 @@ @@ -71,15 +71,15 @@ - + diff --git a/ui/src/components/view/InfoCard.vue b/ui/src/components/view/InfoCard.vue index 612e4139f7a..daa7e6f91dc 100644 --- a/ui/src/components/view/InfoCard.vue +++ b/ui/src/components/view/InfoCard.vue @@ -105,6 +105,7 @@ icon="barcode" type="dashed" size="small" + @click="$message.success('Copied to clipboard')" v-clipboard:copy="resource.id" /> {{ resource.id }} @@ -498,13 +499,13 @@ - +
- {{ resource.apikey }} + {{ resource.apikey.substring(0, 20) }}...

@@ -515,13 +516,13 @@ - +
- {{ resource.secretkey }} + {{ resource.secretkey.substring(0, 20) }}...
diff --git a/ui/src/components/view/ListView.vue b/ui/src/components/view/ListView.vue index 59b679a7c2b..a31c1776e96 100644 --- a/ui/src/components/view/ListView.vue +++ b/ui/src/components/view/ListView.vue @@ -60,17 +60,21 @@
--> - +
- {{ text }} - {{ text }} + + {{ text }} + + {{ text }} + {{ text }} +
-
+ {{ text }} @@ -93,6 +97,12 @@ {{ text }} + + + {{ text }} + + {{ text }} + @@ -286,8 +296,8 @@ export default { !json.updateconfigurationresponse.configuration.isdynamic && ['Admin'].includes(this.$store.getters.userInfo.roletype)) { this.$notification.warning({ - message: 'Status', - description: 'Please restart your management server(s) for your new settings to take effect.' + message: this.$t('label.status'), + description: this.$t('message.restart.mgmt.server') }) } }).catch(error => { diff --git a/ui/src/components/view/SettingsTab.vue b/ui/src/components/view/SettingsTab.vue index 89b934bf679..85fafdd4b4d 100644 --- a/ui/src/components/view/SettingsTab.vue +++ b/ui/src/components/view/SettingsTab.vue @@ -131,7 +131,7 @@ export default { console.error(error) this.$message.error('There was an error saving this setting.') this.$notification.error({ - message: 'Error', + message: this.$t('label.error'), description: 'There was an error saving this setting. Please try again later.' }) }).finally(() => { diff --git a/ui/src/components/view/TreeView.vue b/ui/src/components/view/TreeView.vue index cd82a81d63d..f3e838e1d6c 100644 --- a/ui/src/components/view/TreeView.vue +++ b/ui/src/components/view/TreeView.vue @@ -21,7 +21,7 @@ diff --git a/ui/src/config/section/account.js b/ui/src/config/section/account.js index c10bbab923f..5f4bf8b468f 100644 --- a/ui/src/config/section/account.js +++ b/ui/src/config/section/account.js @@ -85,6 +85,7 @@ export default { api: 'updateResourceCount', icon: 'sync', label: 'label.action.update.resource.count', + message: 'message.update.resource.count', dataView: true, args: ['account', 'domainid'], mapping: { @@ -100,6 +101,7 @@ export default { api: 'enableAccount', icon: 'play-circle', label: 'label.action.enable.account', + message: 'message.enable.account', dataView: true, show: (record) => { return record.state === 'disabled' || record.state === 'locked' }, params: { lock: 'false' } @@ -108,6 +110,7 @@ export default { api: 'disableAccount', icon: 'pause-circle', label: 'label.action.disable.account', + message: 'message.disable.account', dataView: true, show: (record) => { return record.state === 'enabled' }, args: ['lock'], @@ -121,6 +124,7 @@ export default { api: 'disableAccount', icon: 'lock', label: 'label.action.lock.account', + message: 'message.lock.account', dataView: true, show: (record) => { return record.state === 'enabled' }, args: ['lock'], @@ -150,6 +154,7 @@ export default { api: 'deleteAccount', icon: 'delete', label: 'label.action.delete.account', + message: 'message.delete.account', dataView: true, hidden: (record) => { return record.name === 'admin' } } diff --git a/ui/src/config/section/compute.js b/ui/src/config/section/compute.js index 1c6ce341c12..1dd82e136a7 100644 --- a/ui/src/config/section/compute.js +++ b/ui/src/config/section/compute.js @@ -83,6 +83,7 @@ export default { api: 'startVirtualMachine', icon: 'caret-right', label: 'label.action.start.instance', + message: 'message.action.start.instance', docHelp: 'adminguide/virtual_machines.html#stopping-and-starting-vms', dataView: true, groupAction: true, @@ -113,6 +114,7 @@ export default { api: 'restoreVirtualMachine', icon: 'sync', label: 'label.reinstall.vm', + message: 'message.reinstall.vm', dataView: true, args: ['virtualmachineid', 'templateid'], show: (record) => { return ['Running', 'Stopped'].includes(record.state) }, @@ -142,6 +144,7 @@ export default { api: 'assignVirtualMachineToBackupOffering', icon: 'folder-add', label: 'label.backup.offering.assign', + message: 'label.backup.offering.assign', dataView: true, args: ['virtualmachineid', 'backupofferingid'], show: (record) => { return !record.backupofferingid }, @@ -185,6 +188,7 @@ export default { api: 'removeVirtualMachineFromBackupOffering', icon: 'scissor', label: 'label.backup.offering.remove', + message: 'label.backup.offering.remove', dataView: true, args: ['virtualmachineid', 'forced'], show: (record) => { return record.backupofferingid }, @@ -214,6 +218,7 @@ export default { api: 'detachIso', icon: 'link', label: 'label.action.detach.iso', + message: 'message.detach.iso.confirm', dataView: true, args: ['virtualmachineid'], show: (record) => { return ['Running', 'Stopped'].includes(record.state) && 'isoid' in record && record.isoid }, @@ -267,6 +272,7 @@ export default { api: 'migrateVirtualMachine', icon: 'drag', label: 'label.migrate.instance.to.ps', + message: 'message.migrate.instance.to.ps', dataView: true, show: (record, store) => { return ['Stopped'].includes(record.state) && ['Admin'].includes(store.userInfo.roletype) }, args: ['storageid', 'virtualmachineid'], @@ -283,6 +289,7 @@ export default { api: 'resetPasswordForVirtualMachine', icon: 'key', label: 'label.action.reset.password', + message: 'message.action.instance.reset.password', dataView: true, show: (record) => { return ['Running', 'Stopped'].includes(record.state) }, response: (result) => { return result.virtualmachine && result.virtualmachine.password ? `Password of the VM is ${result.virtualmachine.password}` : null } @@ -319,6 +326,7 @@ export default { api: 'recoverVirtualMachine', icon: 'medicine-box', label: 'label.recover.vm', + message: 'message.recover.vm', dataView: true, show: (record, store) => { return ['Destroyed'].includes(record.state) && store.features.allowuserexpungerecovervm } }, @@ -334,6 +342,7 @@ export default { api: 'expungeVirtualMachine', icon: 'delete', label: 'label.action.expunge.instance', + message: 'message.action.expunge.instance', dataView: true, show: (record, store) => { return ['Destroyed', 'Expunging'].includes(record.state) && store.features.allowuserexpungerecovervm } }, @@ -341,6 +350,7 @@ export default { api: 'destroyVirtualMachine', icon: 'delete', label: 'label.action.destroy.instance', + message: 'message.action.destroy.instance', args: ['expunge', 'volumeids'], mapping: { volumeids: { @@ -523,6 +533,7 @@ export default { api: 'deleteAffinityGroup', icon: 'delete', label: 'label.delete.affinity.group', + message: 'message.delete.affinity.group', dataView: true } ] diff --git a/ui/src/config/section/config.js b/ui/src/config/section/config.js index bd640785c6b..1e6531b896b 100644 --- a/ui/src/config/section/config.js +++ b/ui/src/config/section/config.js @@ -26,8 +26,7 @@ export default { title: 'label.global.settings', icon: 'setting', permission: ['listConfigurations'], - columns: ['name', 'description', 'category', 'value', 'actions'], - details: ['name', 'category', 'description', 'value'] + columns: ['name', 'description', 'category', 'value', 'actions'] }, { name: 'ldapsetting', @@ -50,6 +49,7 @@ export default { api: 'deleteLdapConfiguration', icon: 'delete', label: 'label.remove.ldap', + message: 'message.remove.ldap', dataView: true, args: ['hostname'], mapping: { @@ -65,16 +65,15 @@ export default { title: 'label.hypervisor.capabilities', icon: 'database', permission: ['listHypervisorCapabilities'], - columns: ['hypervisor', 'hypervisorversion', 'maxguestslimit', 'maxdatavolumeslimit', 'maxhostspercluster'], + columns: ['hypervisor', 'hypervisorversion', 'maxguestslimit', 'maxhostspercluster'], + details: ['hypervisor', 'hypervisorversion', 'maxguestslimit', 'maxdatavolumeslimit', 'maxhostspercluster', 'securitygroupenabled', 'storagemotionenabled'], actions: [ { api: 'updateHypervisorCapabilities', icon: 'edit', label: 'label.edit', dataView: true, - args: [ - 'id', 'maxguestslimit' - ] + args: ['maxguestslimit'] } ] } diff --git a/ui/src/config/section/domain.js b/ui/src/config/section/domain.js index 004f2c3aee2..72a17de6351 100644 --- a/ui/src/config/section/domain.js +++ b/ui/src/config/section/domain.js @@ -76,6 +76,7 @@ export default { api: 'updateResourceCount', icon: 'sync', label: 'label.action.update.resource.count', + message: 'message.update.resource.count', listView: true, dataView: true, args: ['domainid'], diff --git a/ui/src/config/section/event.js b/ui/src/config/section/event.js index 36ef1f0c268..d0ccea7a29d 100644 --- a/ui/src/config/section/event.js +++ b/ui/src/config/section/event.js @@ -32,6 +32,7 @@ export default { api: 'archiveEvents', icon: 'book', label: 'label.archive.events', + message: 'message.confirm.archive.selected.events', listView: false, dataView: true, args: ['ids'], @@ -45,6 +46,7 @@ export default { api: 'deleteEvents', icon: 'delete', label: 'label.delete.events', + message: 'message.confirm.remove.selected.events', listView: false, dataView: true, args: ['ids'], diff --git a/ui/src/config/section/image.js b/ui/src/config/section/image.js index 046d3a354ea..82a12dc1288 100644 --- a/ui/src/config/section/image.js +++ b/ui/src/config/section/image.js @@ -75,6 +75,7 @@ export default { api: 'extractTemplate', icon: 'cloud-download', label: 'label.action.download.template', + message: 'message.action.download.template', dataView: true, show: (record) => { return record && record.isextractable }, args: ['zoneid', 'mode'], @@ -149,6 +150,7 @@ export default { api: 'extractIso', icon: 'cloud-download', label: 'label.action.download.iso', + message: 'message.action.download.iso', dataView: true, show: (record) => { return record && record.isextractable }, args: ['zoneid', 'mode'], diff --git a/ui/src/config/section/infra.js b/ui/src/config/section/infra.js index fc12b125800..2372b0c292c 100644 --- a/ui/src/config/section/infra.js +++ b/ui/src/config/section/infra.js @@ -77,6 +77,7 @@ export default { api: 'archiveAlerts', icon: 'book', label: 'label.archive.alerts', + message: 'message.confirm.archive.selected.alerts', dataView: true, args: ['ids'], mapping: { @@ -88,7 +89,8 @@ export default { { api: 'deleteAlerts', icon: 'delete', - label: 'label.delete.events', + label: 'label.delete.alerts', + message: 'message.confirm.remove.selected.alerts', dataView: true, args: ['ids'], mapping: { diff --git a/ui/src/config/section/infra/clusters.js b/ui/src/config/section/infra/clusters.js index 955cfb2105b..ac3868dde75 100644 --- a/ui/src/config/section/infra/clusters.js +++ b/ui/src/config/section/infra/clusters.js @@ -47,6 +47,7 @@ export default { api: 'updateCluster', icon: 'play-circle', label: 'label.action.enable.cluster', + message: 'message.action.enable.cluster', dataView: true, defaultArgs: { allocationstate: 'Enabled' }, show: (record) => { return record.allocationstate === 'Disabled' } @@ -55,6 +56,7 @@ export default { api: 'updateCluster', icon: 'pause-circle', label: 'label.action.disable.cluster', + message: 'message.action.disable.cluster', dataView: true, defaultArgs: { allocationstate: 'Disabled' }, show: (record) => { return record.allocationstate === 'Enabled' } @@ -63,6 +65,7 @@ export default { api: 'updateCluster', icon: 'plus-square', label: 'label.action.manage.cluster', + message: 'message.action.manage.cluster', dataView: true, defaultArgs: { managedstate: 'Managed' }, show: (record) => { return record.clustertype === 'CloudManaged' && ['PrepareUnmanaged', 'Unmanaged'].includes(record.state) } @@ -71,6 +74,7 @@ export default { api: 'updateCluster', icon: 'minus-square', label: 'label.action.unmanage.cluster', + message: 'message.action.unmanage.cluster', dataView: true, defaultArgs: { managedstate: 'Unmanaged' }, show: (record) => { return record.clustertype === 'CloudManaged' && record.state === 'Enabled' } @@ -79,6 +83,7 @@ export default { api: 'enableOutOfBandManagementForCluster', icon: 'plus-circle', label: 'label.outofbandmanagement.enable', + message: 'label.outofbandmanagement.enable', dataView: true, show: (record) => { return !record.resourcedetails || !record.resourcedetails.outOfBandManagementEnabled || @@ -95,6 +100,7 @@ export default { api: 'disableOutOfBandManagementForCluster', icon: 'minus-circle', label: 'label.outofbandmanagement.disable', + message: 'label.outofbandmanagement.disable', dataView: true, show: (record) => { return record.resourcedetails && record.resourcedetails.outOfBandManagementEnabled && @@ -111,6 +117,7 @@ export default { api: 'enableHAForCluster', icon: 'eye', label: 'label.ha.enable', + message: 'label.ha.enable', dataView: true, show: (record) => { return !record.resourcedetails || !record.resourcedetails.resourceHAEnabled || @@ -127,6 +134,7 @@ export default { api: 'disableHAForCluster', icon: 'eye-invisible', label: 'label.ha.disable', + message: 'label.ha.disable', dataView: true, show: (record) => { return record.resourcedetails && record.resourcedetails.resourceHAEnabled && @@ -143,6 +151,7 @@ export default { api: 'deleteCluster', icon: 'delete', label: 'label.action.delete.cluster', + message: 'message.action.delete.cluster', dataView: true } ] diff --git a/ui/src/config/section/infra/hosts.js b/ui/src/config/section/infra/hosts.js index ed10e669f54..e06a7d7281f 100644 --- a/ui/src/config/section/infra/hosts.js +++ b/ui/src/config/section/infra/hosts.js @@ -61,6 +61,7 @@ export default { api: 'provisionCertificate', icon: 'safety-certificate', label: 'label.action.secure.host', + message: 'message.action.secure.host', dataView: true, show: (record) => { return record.hypervisor === 'KVM' }, args: ['hostid'], @@ -74,6 +75,7 @@ export default { api: 'reconnectHost', icon: 'forward', label: 'label.action.force.reconnect', + message: 'message.confirm.action.force.reconnect', dataView: true, show: (record) => { return ['Disconnected', 'Up'].includes(record.state) } }, @@ -81,6 +83,7 @@ export default { api: 'updateHost', icon: 'pause-circle', label: 'label.disable.host', + message: 'message.confirm.disable.host', dataView: true, defaultArgs: { allocationstate: 'Disable' }, show: (record) => { return record.resourcestate === 'Enabled' } @@ -89,6 +92,7 @@ export default { api: 'updateHost', icon: 'play-circle', label: 'label.enable.host', + message: 'message.confirm.enable.host', dataView: true, defaultArgs: { allocationstate: 'Enable' }, show: (record) => { return record.resourcestate === 'Disabled' } @@ -97,6 +101,7 @@ export default { api: 'prepareHostForMaintenance', icon: 'plus-square', label: 'label.action.enable.maintenance.mode', + message: 'message.action.host.enable.maintenance.mode', dataView: true, show: (record) => { return record.resourcestate === 'Enabled' } }, @@ -104,6 +109,7 @@ export default { api: 'cancelHostMaintenance', icon: 'minus-square', label: 'label.action.cancel.maintenance.mode', + message: 'message.action.cancel.maintenance.mode', dataView: true, show: (record) => { return record.resourcestate === 'Maintenance' || record.resourcestate === 'ErrorInMaintenance' || record.resourcestate === 'PrepareForMaintenance' } }, @@ -111,6 +117,7 @@ export default { api: 'configureOutOfBandManagement', icon: 'setting', label: 'label.outofbandmanagement.configure', + message: 'label.outofbandmanagement.configure', dataView: true, args: ['hostid', 'address', 'port', 'username', 'password', 'driver'], mapping: { @@ -126,6 +133,7 @@ export default { api: 'enableOutOfBandManagementForHost', icon: 'plus-circle', label: 'label.outofbandmanagement.enable', + message: 'label.outofbandmanagement.enable', dataView: true, show: (record) => { return !record.outofbandmanagement || !record.outofbandmanagement.enabled || @@ -142,6 +150,7 @@ export default { api: 'disableOutOfBandManagementForHost', icon: 'minus-circle', label: 'label.outofbandmanagement.disable', + message: 'label.outofbandmanagement.disable', dataView: true, show: (record) => { return record.outofbandmanagement && record.outofbandmanagement.enabled && @@ -158,6 +167,7 @@ export default { api: 'issueOutOfBandManagementPowerAction', icon: 'login', label: 'label.outofbandmanagement.action.issue', + message: 'label.outofbandmanagement.action.issue', dataView: true, show: (record) => { return record.outofbandmanagement && record.outofbandmanagement.enabled && @@ -174,6 +184,7 @@ export default { api: 'changeOutOfBandManagementPassword', icon: 'key', label: 'label.outofbandmanagement.changepassword', + message: 'label.outofbandmanagement.changepassword', dataView: true, show: (record) => { return record.outofbandmanagement && record.outofbandmanagement.enabled && @@ -190,6 +201,7 @@ export default { api: 'configureHAForHost', icon: 'tool', label: 'label.ha.configure', + message: 'label.ha.configure', dataView: true, args: ['hostid', 'provider'], mapping: { @@ -205,6 +217,7 @@ export default { api: 'enableHAForHost', icon: 'eye', label: 'label.ha.enable', + message: 'label.ha.enable', dataView: true, show: (record) => { return !record.hostha || !record.hostha.haenable || record.hostha.haenable === false @@ -220,6 +233,7 @@ export default { api: 'disableHAForHost', icon: 'eye-invisible', label: 'label.ha.disable', + message: 'label.ha.disable', dataView: true, show: (record) => { return record.hostha && record.hostha.haenable && diff --git a/ui/src/config/section/infra/ilbvms.js b/ui/src/config/section/infra/ilbvms.js index e000d69e2d7..01a6ce74832 100644 --- a/ui/src/config/section/infra/ilbvms.js +++ b/ui/src/config/section/infra/ilbvms.js @@ -28,6 +28,7 @@ export default { api: 'startInternalLoadBalancerVM', icon: 'caret-right', label: 'label.action.start.router', + message: 'message.confirm.start.lb.vm', dataView: true, show: (record) => { return record.state === 'Stopped' } }, diff --git a/ui/src/config/section/infra/nsp.js b/ui/src/config/section/infra/nsp.js index 3884d11fc27..4b2171331f5 100644 --- a/ui/src/config/section/infra/nsp.js +++ b/ui/src/config/section/infra/nsp.js @@ -32,6 +32,7 @@ export default { api: 'updateNetworkServiceProvider', icon: 'stop', label: 'label.disable.provider', + message: 'message.confirm.disable.provider', dataView: true, args: ['state'], show: (record) => { return record.state === 'Enabled' }, @@ -45,6 +46,7 @@ export default { api: 'updateNetworkServiceProvider', icon: 'right-circle', label: 'label.enable.provider', + message: 'message.confirm.enable.provider', dataView: true, args: ['state'], show: (record) => { return record.state === 'Disabled' }, diff --git a/ui/src/config/section/infra/phynetworks.js b/ui/src/config/section/infra/phynetworks.js index b772fe83ee0..0045cee91b0 100644 --- a/ui/src/config/section/infra/phynetworks.js +++ b/ui/src/config/section/infra/phynetworks.js @@ -17,7 +17,7 @@ export default { name: 'physicalnetwork', - title: 'label.physical.networks', + title: 'label.physical.network', icon: 'api', hidden: true, permission: ['listPhysicalNetworks'], @@ -122,6 +122,7 @@ export default { api: 'deletePhysicalNetwork', icon: 'delete', label: 'label.action.delete.physical.network', + message: 'message.action.delete.physical.network', dataView: true } ] diff --git a/ui/src/config/section/infra/pods.js b/ui/src/config/section/infra/pods.js index e8c8ebc0dc0..09d69c747db 100644 --- a/ui/src/config/section/infra/pods.js +++ b/ui/src/config/section/infra/pods.js @@ -51,6 +51,7 @@ export default { api: 'updatePod', icon: 'play-circle', label: 'label.action.enable.pod', + message: 'message.action.enable.pod', dataView: true, show: (record) => { return record.allocationstate === 'Disabled' }, args: ['allocationstate'], @@ -64,6 +65,7 @@ export default { api: 'updatePod', icon: 'pause-circle', label: 'label.action.disable.pod', + message: 'message.action.disable.pod', dataView: true, show: (record) => { return record.allocationstate === 'Enabled' }, args: ['allocationstate'], @@ -77,6 +79,7 @@ export default { api: 'deletePod', icon: 'delete', label: 'label.action.delete.pod', + message: 'message.action.delete.pod', dataView: true } ] diff --git a/ui/src/config/section/infra/primaryStorages.js b/ui/src/config/section/infra/primaryStorages.js index a4e209a887a..28ae6c40566 100644 --- a/ui/src/config/section/infra/primaryStorages.js +++ b/ui/src/config/section/infra/primaryStorages.js @@ -54,6 +54,7 @@ export default { api: 'enableStorageMaintenance', icon: 'plus-square', label: 'label.action.enable.maintenance.mode', + message: 'message.action.primarystorage.enable.maintenance.mode', dataView: true, show: (record) => { return ['Up', 'Connecting', 'Down', 'ErrorInMaintenance'].includes(record.state) } }, @@ -61,6 +62,7 @@ export default { api: 'cancelStorageMaintenance', icon: 'minus-square', label: 'label.action.cancel.maintenance.mode', + message: 'message.action.cancel.maintenance.mode', dataView: true, show: (record) => { return ['Maintenance', 'PrepareForMaintenance', 'ErrorInMaintenance'].includes(record.state) } }, diff --git a/ui/src/config/section/infra/routers.js b/ui/src/config/section/infra/routers.js index 0ba9d32e241..fcb82545c5e 100644 --- a/ui/src/config/section/infra/routers.js +++ b/ui/src/config/section/infra/routers.js @@ -28,6 +28,7 @@ export default { api: 'startRouter', icon: 'caret-right', label: 'label.action.start.router', + message: 'message.action.start.router', dataView: true, show: (record) => { return record.state === 'Stopped' } }, @@ -44,6 +45,7 @@ export default { api: 'rebootRouter', icon: 'sync', label: 'label.action.reboot.router', + message: 'message.action.reboot.router', dataView: true, hidden: (record) => { return record.state === 'Running' } }, @@ -51,6 +53,7 @@ export default { api: 'scaleSystemVm', icon: 'arrows-alt', label: 'label.change.service.offering', + message: 'message.confirm.scale.up.router.vm', dataView: true, args: ['serviceofferingid'], show: (record) => { return record.hypervisor !== 'KVM' } @@ -59,6 +62,7 @@ export default { api: 'upgradeRouterTemplate', icon: 'fullscreen', label: 'label.upgrade.router.newer.template', + message: 'message.confirm.upgrade.router.newer.template', dataView: true, groupAction: true, show: (record) => { return record.requiresupgrade } @@ -111,6 +115,7 @@ export default { api: 'destroyRouter', icon: 'delete', label: 'label.destroy.router', + message: 'message.confirm.destroy.router', dataView: true, show: (record) => { return ['Running', 'Error', 'Stopped'].includes(record.state) } } diff --git a/ui/src/config/section/infra/secondaryStorages.js b/ui/src/config/section/infra/secondaryStorages.js index 0359a526209..ca65bfa8ed2 100644 --- a/ui/src/config/section/infra/secondaryStorages.js +++ b/ui/src/config/section/infra/secondaryStorages.js @@ -42,6 +42,7 @@ export default { api: 'deleteImageStore', icon: 'delete', label: 'label.action.delete.secondary.storage', + message: 'message.action.delete.secondary.storage', dataView: true } ] diff --git a/ui/src/config/section/infra/systemVms.js b/ui/src/config/section/infra/systemVms.js index 60429aaea80..1d0b5cd3d2e 100644 --- a/ui/src/config/section/infra/systemVms.js +++ b/ui/src/config/section/infra/systemVms.js @@ -27,6 +27,7 @@ export default { api: 'startSystemVm', icon: 'caret-right', label: 'label.action.start.systemvm', + message: 'message.action.start.systemvm', dataView: true, show: (record) => { return record.state === 'Stopped' } }, @@ -43,6 +44,7 @@ export default { api: 'rebootSystemVm', icon: 'sync', label: 'label.action.reboot.systemvm', + message: 'message.action.reboot.systemvm', dataView: true, show: (record) => { return record.state === 'Running' } }, @@ -50,6 +52,7 @@ export default { api: 'scaleSystemVm', icon: 'arrows-alt', label: 'label.change.service.offering', + message: 'message.confirm.scale.up.system.vm', dataView: true, show: (record) => { return record.hypervisor !== 'KVM' }, args: ['serviceofferingid'] @@ -102,6 +105,7 @@ export default { api: 'destroySystemVm', icon: 'delete', label: 'label.action.destroy.systemvm', + message: 'message.action.destroy.systemvm', dataView: true, show: (record) => { return ['Running', 'Error', 'Stopped'].includes(record.state) } } diff --git a/ui/src/config/section/infra/zones.js b/ui/src/config/section/infra/zones.js index 0e92514e090..3b769342f81 100644 --- a/ui/src/config/section/infra/zones.js +++ b/ui/src/config/section/infra/zones.js @@ -88,6 +88,7 @@ export default { api: 'updateZone', icon: 'pause-circle', label: 'label.action.disable.zone', + message: 'message.action.disable.zone', dataView: true, defaultArgs: { allocationstate: 'Disabled' }, show: (record) => { return record.allocationstate === 'Enabled' } @@ -96,6 +97,7 @@ export default { api: 'updateZone', icon: 'play-circle', label: 'label.action.enable.zone', + message: 'message.action.enable.zone', dataView: true, defaultArgs: { allocationstate: 'Enabled' }, show: (record) => { return record.allocationstate === 'Disabled' } @@ -104,6 +106,7 @@ export default { api: 'enableOutOfBandManagementForZone', icon: 'plus-circle', label: 'label.outofbandmanagement.enable', + message: 'label.outofbandmanagement.enable', dataView: true, show: (record) => { return !record.resourcedetails || !record.resourcedetails.outOfBandManagementEnabled || @@ -120,6 +123,7 @@ export default { api: 'disableOutOfBandManagementForZone', icon: 'minus-circle', label: 'label.outofbandmanagement.disable', + message: 'label.outofbandmanagement.disable', dataView: true, show: (record) => { return record.resourcedetails && record.resourcedetails.outOfBandManagementEnabled && @@ -136,6 +140,7 @@ export default { api: 'enableHAForZone', icon: 'eye', label: 'label.ha.enable', + message: 'label.ha.enable', dataView: true, show: (record) => { return !record.resourcedetails || !record.resourcedetails.resourceHAEnabled || @@ -152,6 +157,7 @@ export default { api: 'disableHAForZone', icon: 'eye-invisible', label: 'label.ha.disable', + message: 'label.ha.disable', dataView: true, show: (record) => { return record.resourcedetails && record.resourcedetails.resourceHAEnabled && @@ -181,6 +187,7 @@ export default { api: 'updateVmwareDc', icon: 'block', label: 'label.update.vmware.datacenter', + message: 'label.update.vmware.datacenter', dataView: true, show: record => record.vmwaredc, args: ['zoneid', 'name', 'vcenter', 'username', 'password'], @@ -194,6 +201,7 @@ export default { api: 'removeVmwareDc', icon: 'minus-square', label: 'label.remove.vmware.datacenter', + message: 'message.confirm.remove.vmware.datacenter', dataView: true, show: record => record.vmwaredc, args: ['zoneid'], @@ -207,6 +215,7 @@ export default { api: 'deleteZone', icon: 'delete', label: 'label.action.delete.zone', + message: 'message.action.delete.zone', dataView: true } ] diff --git a/ui/src/config/section/network.js b/ui/src/config/section/network.js index fe02c687a14..1ca76cd8045 100644 --- a/ui/src/config/section/network.js +++ b/ui/src/config/section/network.js @@ -78,6 +78,7 @@ export default { api: 'replaceNetworkACLList', icon: 'swap', label: 'label.replace.acl.list', + message: 'message.confirm.replace.acl.new.one', dataView: true, show: (record) => { return record.vpcid }, args: ['aclid', 'networkid'], @@ -95,6 +96,7 @@ export default { api: 'deleteNetwork', icon: 'delete', label: 'label.action.delete.network', + message: 'message.action.delete.network', dataView: true } ] @@ -143,6 +145,7 @@ export default { api: 'restartVPC', icon: 'sync', label: 'label.restart.vpc', + message: 'message.restart.vpc', dataView: true, args: ['makeredundant', 'cleanup'] }, @@ -150,6 +153,7 @@ export default { api: 'deleteVPC', icon: 'delete', label: 'label.remove.vpc', + message: 'message.remove.vpc', dataView: true } ] @@ -184,6 +188,7 @@ export default { api: 'deleteSecurityGroup', icon: 'delete', label: 'label.action.delete.security.group', + message: 'message.action.delete.security.group', dataView: true, show: (record) => { return record.name !== 'default' } } @@ -238,6 +243,7 @@ export default { api: 'disableStaticNat', icon: 'minus-circle', label: 'label.action.disable.static.nat', + message: 'message.action.disable.static.nat', dataView: true, show: (record) => { return record.virtualmachineid }, args: ['ipaddressid'], @@ -251,6 +257,7 @@ export default { api: 'disassociateIpAddress', icon: 'delete', label: 'label.action.release.ip', + message: 'message.action.release.ip', dataView: true, show: (record) => { return !record.issourcenat } } @@ -289,6 +296,7 @@ export default { api: 'replaceNetworkACLList', icon: 'swap', label: 'label.replace.acl.list', + message: 'message.confirm.replace.acl.new.one', dataView: true, args: ['aclid', 'gatewayid'], mapping: { @@ -305,13 +313,14 @@ export default { api: 'deletePrivateGateway', icon: 'delete', label: 'label.delete.gateway', + message: 'message.delete.gateway', dataView: true } ] }, { name: 's2svpn', - title: 'label.site-to-site.vpns', + title: 'label.site.to.site.vpn', icon: 'lock', hidden: true, permission: ['listVpnGateways'], @@ -329,13 +338,14 @@ export default { api: 'deleteVpnGateway', icon: 'delete', label: 'label.delete.vpn.gateway', + message: 'message.delete.vpn.gateway', dataView: true } ] }, { name: 's2svpnconn', - title: 'label.site-to-site.vpn.connections', + title: 'label.site.to.site.vpn.connections', icon: 'sync', hidden: true, permission: ['listVpnConnections'], @@ -361,12 +371,14 @@ export default { api: 'resetVpnConnection', icon: 'reload', label: 'label.reset.vpn.connection', + message: 'message.reset.vpn.connection', dataView: true }, { api: 'deleteVpnConnection', icon: 'delete', label: 'label.delete.vpn.connection', + message: 'message.delete.vpn.connection', dataView: true } ] @@ -406,6 +418,7 @@ export default { api: 'deleteNetworkACLList', icon: 'delete', label: 'label.delete.acl.list', + message: 'message.confirm.delete.acl.list', dataView: true } ] @@ -462,6 +475,7 @@ export default { api: 'deleteLoadBalancer', icon: 'delete', label: 'label.delete.internal.lb', + message: 'message.confirm.delete.internal.lb', dataView: true } ] @@ -485,6 +499,7 @@ export default { api: 'removeVpnUser', icon: 'delete', label: 'label.delete.vpn.user', + message: 'message.action.delete.vpn.user', dataView: true, args: ['username', 'domainid', 'account'], mapping: { @@ -528,6 +543,7 @@ export default { api: 'deleteVpnCustomerGateway', icon: 'delete', label: 'label.delete.vpn.customer.gateway', + message: 'message.delete.vpn.customer.gateway', dataView: true } ] diff --git a/ui/src/config/section/offering.js b/ui/src/config/section/offering.js index 878a3ca5e94..bd1e70207f0 100644 --- a/ui/src/config/section/offering.js +++ b/ui/src/config/section/offering.js @@ -58,6 +58,7 @@ export default { api: 'deleteServiceOffering', icon: 'delete', label: 'label.action.delete.service.offering', + message: 'message.action.delete.service.offering', dataView: true }] }, @@ -88,6 +89,7 @@ export default { api: 'deleteServiceOffering', icon: 'delete', label: 'label.action.delete.system.service.offering', + message: 'message.action.delete.system.service.offering', dataView: true, params: { issystem: 'true' } }] @@ -129,6 +131,7 @@ export default { api: 'deleteDiskOffering', icon: 'delete', label: 'label.action.delete.disk.offering', + message: 'message.action.delete.disk.offering', dataView: true }] }, @@ -150,6 +153,7 @@ export default { api: 'deleteBackupOffering', icon: 'delete', label: 'label.action.delete.backup.offering', + message: 'message.action.delete.backup.offering', dataView: true }] }, @@ -183,6 +187,7 @@ export default { api: 'updateNetworkOffering', icon: 'play-circle', label: 'label.enable.network.offering', + message: 'message.confirm.enable.network.offering', dataView: true, show: (record) => { return record.state === 'Disabled' }, args: ['state'], @@ -195,6 +200,7 @@ export default { api: 'updateNetworkOffering', icon: 'pause-circle', label: 'label.disable.network.offering', + message: 'message.confirm.disable.network.offering', dataView: true, show: (record) => { return record.state === 'Enabled' }, args: ['state'], @@ -214,6 +220,7 @@ export default { api: 'deleteNetworkOffering', icon: 'delete', label: 'label.remove.network.offering', + message: 'message.confirm.remove.network.offering', dataView: true }] }, @@ -248,6 +255,7 @@ export default { api: 'updateVPCOffering', icon: 'play-circle', label: 'label.enable.vpc.offering', + message: 'message.confirm.enable.vpc.offering', dataView: true, show: (record) => { return record.state === 'Disabled' }, args: ['state'], @@ -260,6 +268,7 @@ export default { api: 'updateVPCOffering', icon: 'pause-circle', label: 'label.disable.vpc.offering', + message: 'message.confirm.disable.vpc.offering', dataView: true, show: (record) => { return record.state === 'Enabled' }, args: ['state'], @@ -279,6 +288,7 @@ export default { api: 'deleteVPCOffering', icon: 'delete', label: 'label.remove.vpc.offering', + message: 'message.confirm.remove.vpc.offering', dataView: true }] } diff --git a/ui/src/config/section/project.js b/ui/src/config/section/project.js index eb67db366f1..7d47a35cf82 100644 --- a/ui/src/config/section/project.js +++ b/ui/src/config/section/project.js @@ -79,6 +79,7 @@ export default { api: 'activateProject', icon: 'play-circle', label: 'label.activate.project', + message: 'message.activate.project', dataView: true, show: (record) => { return record.state === 'Suspended' } }, @@ -86,6 +87,7 @@ export default { api: 'suspendProject', icon: 'pause-circle', label: 'label.suspend.project', + message: 'message.suspend.project', dataView: true, show: (record) => { return record.state !== 'Suspended' } }, @@ -106,6 +108,7 @@ export default { api: 'deleteProject', icon: 'delete', label: 'label.delete.project', + message: 'message.delete.project', dataView: true } ] diff --git a/ui/src/config/section/role.js b/ui/src/config/section/role.js index f68253bba8d..995941299f8 100644 --- a/ui/src/config/section/role.js +++ b/ui/src/config/section/role.js @@ -58,6 +58,7 @@ export default { api: 'deleteRole', icon: 'delete', label: 'label.delete.role', + message: 'label.delete.role', dataView: true } ] diff --git a/ui/src/config/section/storage.js b/ui/src/config/section/storage.js index a79af77d650..27eb8e97c1d 100644 --- a/ui/src/config/section/storage.js +++ b/ui/src/config/section/storage.js @@ -66,6 +66,7 @@ export default { api: 'attachVolume', icon: 'paper-clip', label: 'label.action.attach.disk', + message: 'message.confirm.attach.disk', args: ['virtualmachineid'], dataView: true, show: (record) => { return record.type !== 'ROOT' && record.state !== 'Destroy' && !('virtualmachineid' in record) } @@ -74,6 +75,7 @@ export default { api: 'detachVolume', icon: 'link', label: 'label.action.detach.disk', + message: 'message.detach.disk', dataView: true, show: (record) => { return record.type !== 'ROOT' && 'virtualmachineid' in record && record.virtualmachineid } }, @@ -134,6 +136,7 @@ export default { api: 'extractVolume', icon: 'cloud-download', label: 'label.action.download.volume', + message: 'message.download.volume.confirm', dataView: true, show: (record) => { return record && record.state === 'Ready' && (record.vmstate === 'Stopped' || record.virtualmachineid == null) && record.state !== 'Destroy' }, args: ['zoneid', 'mode'], @@ -164,6 +167,7 @@ export default { api: 'recoverVolume', icon: 'medicine-box', label: 'label.action.recover.volume', + message: 'message.action.recover.volume', dataView: true, show: (record, store) => { return (['Admin', 'DomainAdmin'].includes(store.userInfo.roletype) || store.features.allowuserexpungerecovervolume) && record.state === 'Destroy' @@ -173,6 +177,7 @@ export default { api: 'deleteVolume', icon: 'delete', label: 'label.action.delete.volume', + message: 'message.action.delete.volume', dataView: true, groupAction: true, show: (record, store) => { @@ -184,6 +189,7 @@ export default { api: 'destroyVolume', icon: 'delete', label: 'label.action.destroy.volume', + message: 'message.action.destroy.volume', dataView: true, args: (record, store) => { return (!['Admin', 'DomainAdmin'].includes(store.userInfo.roletype) && !store.features.allowuserexpungerecovervolumestore) ? [] : ['expunge'] @@ -233,6 +239,7 @@ export default { api: 'revertSnapshot', icon: 'sync', label: 'label.action.revert.snapshot', + message: 'message.action.revert.snapshot', dataView: true, show: (record) => { return record.revertable } }, @@ -240,6 +247,7 @@ export default { api: 'deleteSnapshot', icon: 'delete', label: 'label.action.delete.snapshot', + message: 'message.action.delete.snapshot', dataView: true } ] @@ -257,6 +265,7 @@ export default { api: 'revertToVMSnapshot', icon: 'sync', label: 'label.action.vmsnapshot.revert', + message: 'label.action.vmsnapshot.revert', dataView: true, show: (record) => { return record.state === 'Ready' }, args: ['vmsnapshotid'], @@ -270,6 +279,7 @@ export default { api: 'deleteVMSnapshot', icon: 'delete', label: 'label.action.vmsnapshot.delete', + message: 'message.action.vmsnapshot.delete', dataView: true, args: ['vmsnapshotid'], mapping: { @@ -292,12 +302,14 @@ export default { api: 'restoreBackup', icon: 'sync', label: 'label.backup.restore', + message: 'message.backup.restore', dataView: true }, { api: 'restoreVolumeFromBackupAndAttachToVM', icon: 'paper-clip', - label: 'Restore Volume and Attach', + label: 'label.backup.attach.restore', + message: 'message.backup.attach.restore', dataView: true, popup: true, component: () => import('@/views/storage/RestoreAttachBackupVolume.vue') @@ -306,6 +318,7 @@ export default { api: 'removeVirtualMachineFromBackupOffering', icon: 'scissor', label: 'label.backup.offering.remove', + message: 'message.backup.offering.remove', dataView: true, args: ['forced', 'virtualmachineid'], mapping: { @@ -320,7 +333,8 @@ export default { { api: 'deleteBackup', icon: 'delete', - label: 'Delete Backup', + label: 'label.delete.backup', + message: 'message.delete.backup', dataView: true } ] diff --git a/ui/src/config/section/user.js b/ui/src/config/section/user.js index e58d65e2fdb..5f667b01b8d 100644 --- a/ui/src/config/section/user.js +++ b/ui/src/config/section/user.js @@ -50,12 +50,14 @@ export default { api: 'registerUserKeys', icon: 'file-protect', label: 'label.action.generate.keys', + message: 'message.generate.keys', dataView: true }, { api: 'enableUser', icon: 'play-circle', label: 'label.action.enable.user', + message: 'message.enable.user', dataView: true, show: (record) => { return record.state === 'disabled' } }, @@ -63,6 +65,7 @@ export default { api: 'disableUser', icon: 'pause-circle', label: 'label.action.disable.user', + message: 'message.disable.user', dataView: true, show: (record) => { return record.state === 'enabled' } }, @@ -70,6 +73,7 @@ export default { api: 'deleteUser', icon: 'delete', label: 'label.action.delete.user', + message: 'message.delete.user', dataView: true } ] diff --git a/ui/src/locales/ar.json b/ui/src/locales/ar.json index d51d04a6068..15a1588b3f0 100644 --- a/ui/src/locales/ar.json +++ b/ui/src/locales/ar.json @@ -861,7 +861,7 @@ "label.instanceport": "Instance Port", "label.instances": "\u0627\u0644\u062d\u0627\u0644\u0627\u062a", "label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade", -"label.intermediate.certificate": "Intermediate certificate {0}", +"label.intermediate.certificate": "Intermediate certificate", "label.internal.dns.1": "Internal DNS 1", "label.internal.dns.2": "Internal DNS 2", "label.internal.lb": "Internal LB", diff --git a/ui/src/locales/ca.json b/ui/src/locales/ca.json index 244a9cbb8dd..302a6989218 100644 --- a/ui/src/locales/ca.json +++ b/ui/src/locales/ca.json @@ -861,7 +861,7 @@ "label.instanceport": "Instance Port", "label.instances": "Instances", "label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade", -"label.intermediate.certificate": "Intermediate certificate {0}", +"label.intermediate.certificate": "Intermediate certificate", "label.internal.dns.1": "Internal DNS 1", "label.internal.dns.2": "Internal DNS 2", "label.internal.lb": "Internal LB", diff --git a/ui/src/locales/de_DE.json b/ui/src/locales/de_DE.json index 3498733162e..89f25d98b51 100644 --- a/ui/src/locales/de_DE.json +++ b/ui/src/locales/de_DE.json @@ -862,7 +862,7 @@ "label.instanceport": "Instanz-Port", "label.instances": "Instanzen", "label.instanciate.template.associate.profile.blade": "Vorlage instanzieren und Profil zu Blade assoziieren", -"label.intermediate.certificate": "Intermediate Zertifikat {0}", +"label.intermediate.certificate": "Intermediate Zertifikat", "label.internal.dns.1": "Interner DNS 1", "label.internal.dns.2": "Interner DNS 2", "label.internal.lb": "Interne LB", diff --git a/ui/src/locales/en.json b/ui/src/locales/en.json index 4b10163a3b7..c93f11112ba 100644 --- a/ui/src/locales/en.json +++ b/ui/src/locales/en.json @@ -430,11 +430,13 @@ "label.available.public.ips": "Available Public IP Addresses", "label.back": "Back", "label.backup": "Backups", +"label.backup.attach.restore": "Restore and Attach Backup Volume", "label.backup.offering.assign": "Assign VM to backup offering", "label.backup.offering.remove": "Remove VM from backup offering", "label.backup.offerings": "Backup Offerings", "label.backup.restore": "Restore VM Backup", "label.backupofferingid": "Backup Offering", +"label.backupofferingname": "Backup Offering", "label.balance": "Balance", "label.bandwidth": "Bandwidth", "label.baremetal.dhcp.devices": "Baremetal DHCP Devices", @@ -484,6 +486,7 @@ "label.capacity.iops": "Capacity IOPS", "label.capacitybytes": "Capacity Bytes", "label.capacityiops": "IOPS Total", +"label.category": "Category", "label.certchain": "Chain", "label.certificate": "Certificate", "label.certificate.details": "Certificate Details", @@ -606,6 +609,7 @@ "label.delete.acl.list": "Delete ACL List", "label.delete.affinity.group": "Delete Affinity Group", "label.delete.alerts": "Delete alerts", +"label.delete.backup" : "Delete Backup", "label.delete.baremetal.rack.configuration": "Delete Baremetal Rack Configuration", "label.delete.bigswitchbcf": "Remove BigSwitch BCF Controller", "label.delete.brocadevcs": "Remove Brocade Vcs Switch", @@ -696,6 +700,7 @@ "label.disksizetotal": "Disk Total", "label.disksizetotalgb": "Total", "label.disksizeunallocatedgb": "Unallocated", +"label.disksizeused": "Disk Size Used", "label.disksizeusedgb": "Used", "label.display.text": "Display Text", "label.displayname": "Display Name", @@ -955,7 +960,7 @@ "label.instanceport": "Instance Port", "label.instances": "Instances", "label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade", -"label.intermediate.certificate": "Intermediate certificate {0}", +"label.intermediate.certificate": "Intermediate certificate", "label.internal.dns.1": "Internal DNS 1", "label.internal.dns.2": "Internal DNS 2", "label.internal.lb": "Internal LB", @@ -1151,8 +1156,10 @@ "label.max.secondary.storage": "Max. secondary (GiB)", "label.maxcpu": "Max. CPU Cores", "label.maxcpunumber": "Max CPU Cores", +"label.maxdatavolumeslimit": "Max data volumes limit", "label.maxerrorretry": "Max Error Retry", "label.maxguestslimit": "Max guest limit", +"label.maxhostspercluster": "Max hosts per cluster", "label.maximum": "Maximum", "label.maxinstance": "Max Instances", "label.maxiops": "Max IOPS", @@ -1264,6 +1271,7 @@ "label.netscaler.details": "NetScaler details", "label.network": "Network", "label.network.acl": "Network ACL", +"label.network.acl.lists": "Network ACL Lists", "label.network.acls": "Network ACLs", "label.network.addvm": "Add network to VM", "label.network.desc": "Network Desc", @@ -1410,6 +1418,7 @@ "label.ping.dir": "PING Directory", "label.ping.path": "Ping Path", "label.ping.storage.ip": "PING storage IP", +"label.pkcs.private.certificate": "PKCS#8 Private certificate", "label.plannermode": "Planner mode", "label.please.complete.the.following.fields": "Please complete the following fields", "label.please.specify.netscaler.info": "Please specify Netscaler info", @@ -1463,6 +1472,7 @@ "label.project.invite": "Invite to project", "label.project.name": "Project name", "label.project.view": "Project View", +"label.projectaccountname": "Project Account Name", "label.projectid": "Project ID", "label.projects": "Projects", "label.promiscuousmode": "Promiscuous Mode", @@ -1682,7 +1692,9 @@ "label.security.groups": "Security Groups", "label.security.groups.enabled": "Security Groups Enabled", "label.securitygroup": "Security Group", +"label.securitygroupenabled": "Security Groups Enabled", "label.securitygroups": "Security Groups", +"label.securitygroupsenabled": "Security Groups Enabled", "label.select": "Select", "label.select-view": "Select view", "label.select.a.zone": "Select a zone", @@ -1696,12 +1708,14 @@ "label.select.region": "Select region", "label.select.tier": "Select Tier", "label.select.vm.for.static.nat": "Select VM for static NAT", +"label.select.zones": "Select zones", "label.self": "Mine", "label.selfexecutable": "Self", "label.semanticversion": "Semantic version", "label.sent": "Date", "label.sentbytes": "Bytes Sent", "label.server": "Server", +"label.server.certificate": "Server certificate", "label.service.connectivity.distributedroutercapabilitycheckbox": "Distributed Router", "label.service.connectivity.regionlevelvpccapabilitycheckbox": "Region Level VPC", "label.service.lb.elasticlbcheckbox": "Elastic LB", @@ -1737,6 +1751,7 @@ "label.shutdown.provider": "Shutdown provider", "label.simplified.chinese.keyboard": "Simplified Chinese keyboard", "label.site.to.site.vpn": "Site-to-site VPN", +"label.site.to.site.vpn.connections": "Site-to-site VPN Connections", "label.size": "Size", "label.sizegb": "Size", "label.skip.guide": "I have used CloudStack before, skip this guide", @@ -1759,6 +1774,7 @@ "label.sourcecidr": "Source CIDR", "label.sourceipaddress": "Source IP Address", "label.sourcenat": "Source NAT", +"label.sourcenatsupported": "Source NAT Supported", "label.sourcenattype": "Supported Source NAT type", "label.sourceport": "Source Port", "label.specify.vxlan": "Specify VXLAN", @@ -1810,6 +1826,7 @@ "label.sticky.holdtime": "Hold time", "label.sticky.indirect": "Indirect", "label.sticky.length": "Length", +"label.sticky.mode": "Mode", "label.sticky.name": "Sticky Name", "label.sticky.nocache": "No cache", "label.sticky.postonly": "Post only", @@ -1823,6 +1840,7 @@ "label.storage.tags": "Storage Tags", "label.storage.traffic": "Storage Traffic", "label.storageid": "Primary Storage", +"label.storagemotionenabled": "Storage Motion Enabled", "label.storagepolicy": "Storage policy", "label.storagepool": "Storage Pool", "label.storagetags": "Storage Tags", @@ -1836,6 +1854,7 @@ "label.summary": "Summary", "label.sunday": "Sunday", "label.supportedservices": "Supported Services", +"label.supportsha": "Supports HA", "label.supportspublicaccess": "Supports Public Access", "label.supportsregionlevelvpc": "Supports Region Level VPC", "label.supportsstrechedl2subnet": "Supports Streched L2 Subnet", @@ -1988,6 +2007,7 @@ "label.virtual.routers.group.zone": "Virtual Routers group by zone", "label.virtualmachinedisplayname": "VM name", "label.virtualmachineid": "VM ID", +"label.virtualmachinename": "VM name", "label.virtualsize": "Virtual Size", "label.vlan": "VLAN/VNI", "label.vlan.range": "VLAN/VNI Range", @@ -2048,6 +2068,7 @@ "label.vpclimit": "VPC limits", "label.vpcname": "VPC", "label.vpcoffering": "VPC Offering", +"label.vpctotal": "Total VPCs", "label.vpn": "VPN", "label.vpn.connection": "VPN Connection", "label.vpn.gateway": "VPN Gateway", @@ -2236,6 +2257,9 @@ "message.assign.instance.another": "Please specify the account type, domain, account name and network (optional) of the new account.
If the default nic of the vm is on a shared network, CloudStack will check if the network can be used by the new account if you do not specify one network.
If the default nic of the vm is on a isolated network, and the new account has more one isolated networks, you should specify one.", "message.attach.iso.confirm": "Please confirm that you want to attach the ISO to this virtual instance.", "message.attach.volume": "Please fill in the following data to attach a new volume. If you are attaching a disk volume to a Windows based virtual machine, you will need to reboot the instance to see the attached disk.", +"message.backup.attach.restore": "Please confirm that you want to restore and attach the volume from the backup?", +"message.backup.offering.remove": "Are you sure you want to remove VM from backup offering and delete the backup chain?", +"message.backup.restore": "Please confirm that you want to restore the vm backup?", "message.basic.mode.desc": "Choose this network model if you do *not* want to enable any VLAN support. All virtual instances created under this network model will be assigned an IP directly from the network and security groups are used to provide security and segregation.", "message.change.offering.confirm": "Please confirm that you wish to change the service offering of this virtual instance.", "message.change.password": "Please change your password.", @@ -2278,7 +2302,7 @@ "message.confirm.delete.srx": "Please confirm that you would like to delete SRX", "message.confirm.delete.ucs.manager": "Please confirm that you want to delete UCS Manager", "message.confirm.destroy.kubernetes.cluster": "Please confirm that you want to destroy this Kubernetes cluster.", -"message.confirm.destroy.router": "Please confirm that you would like to destroy this router", +"message.confirm.destroy.router": "All services provided by this virtual router will be interrupted. Please confirm that you want to stop this router. Please confirm that you would like to destroy this router", "message.confirm.disable.host": "Please confirm that you want to disable the host", "message.confirm.disable.network.offering": "Are you sure you want to disable this network offering?", "message.confirm.disable.provider": "Please confirm that you would like to disable this provider", @@ -2335,8 +2359,13 @@ "message.creating.zone": "Creating zone", "message.dedicate.zone": "Dedicating zone", "message.dedicated.zone.released": "Zone dedication released", +"message.dedicating.cluster": "Dedicating Cluster...", +"message.dedicating.host": "Dedicating Host...", +"message.dedicating.pod": "Dedicating Pod...", +"message.dedicating.zone": "Dedicating Zone...", "message.delete.account": "Please confirm that you want to delete this account.", "message.delete.affinity.group": "Please confirm that you would like to remove this affinity group.", +"message.delete.backup": "Are you sure you want to delete the backup?", "message.delete.gateway": "Please confirm you want to delete the gateway", "message.delete.project": "Are you sure you want to delete this project?", "message.delete.sslcertificate": "Please confirm that you would like to delete this certificate.", @@ -2502,6 +2531,10 @@ "message.register.failed": "Registration Failed", "message.register.succeeded": "Registration Succeeded", "message.reinstall.vm": "NOTE: Proceed with caution. This will cause the VM to be reinstalled from the template; data on the root disk will be lost. Extra data volumes, if any, will not be touched.", +"message.releasing.dedicated.cluster": "Releasing dedicated cluster...", +"message.releasing.dedicated.host": "Releasing dedicated host...", +"message.releasing.dedicated.pod": "Releasing dedicated pod...", +"message.releasing.dedicated.zone": "Releasing dedicated zone...", "message.remove.ldap": "Are you sure you want to delete the LDAP configuration?", "message.remove.region": "Are you sure you want to remove this region from this management server?", "message.remove.vpc": "Please confirm that you want to remove the VPC", diff --git a/ui/src/locales/es.json b/ui/src/locales/es.json index 8bb73010a33..c9a7b9b415d 100644 --- a/ui/src/locales/es.json +++ b/ui/src/locales/es.json @@ -861,7 +861,7 @@ "label.instanceport": "Puerto de Instancia", "label.instances": "Instancias", "label.instanciate.template.associate.profile.blade": "Instanciar Plantilla y asociar al Perfil al Blade", -"label.intermediate.certificate": "Certificado intermedio {0}", +"label.intermediate.certificate": "Certificado intermedio", "label.internal.dns.1": "DNS interno una", "label.internal.dns.2": "DNS interno 2", "label.internal.lb": "LB interno", diff --git a/ui/src/locales/fr_FR.json b/ui/src/locales/fr_FR.json index 0b0f09a4b84..21c03e3da95 100644 --- a/ui/src/locales/fr_FR.json +++ b/ui/src/locales/fr_FR.json @@ -861,7 +861,7 @@ "label.instanceport": "Port Instance", "label.instances": "Instances", "label.instanciate.template.associate.profile.blade": "Instancier Mod\u00e8le et Profil associ\u00e9 \u00e0 la Lame", -"label.intermediate.certificate": "Certificat interm\u00e9diaire {0}", +"label.intermediate.certificate": "Certificat interm\u00e9diaire", "label.internal.dns.1": "DNS interne 1", "label.internal.dns.2": "DNS interne 2", "label.internal.lb": "R\u00e9partiteur interne", diff --git a/ui/src/locales/hu.json b/ui/src/locales/hu.json index 5c6c0631ad3..5c155ee752a 100644 --- a/ui/src/locales/hu.json +++ b/ui/src/locales/hu.json @@ -860,7 +860,7 @@ "label.instanceport": "P\u00e9ld\u00e1ny port", "label.instances": "P\u00e9ld\u00e1nyok", "label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade", -"label.intermediate.certificate": "K\u00f6zb\u00fcls\u0151 tan\u00fas\u00edtv\u00e1ny {0}", +"label.intermediate.certificate": "K\u00f6zb\u00fcls\u0151 tan\u00fas\u00edtv\u00e1ny", "label.internal.dns.1": "1. bels\u0151 DNS", "label.internal.dns.2": "2. bels\u0151 DNS", "label.internal.lb": "Bels\u0151 LB", diff --git a/ui/src/locales/index.js b/ui/src/locales/index.js index 28d2076aabe..b256318d75c 100644 --- a/ui/src/locales/index.js +++ b/ui/src/locales/index.js @@ -34,7 +34,7 @@ function loadLocaleMessages () { Vue.use(VueI18n) export default new VueI18n({ - locale: Vue.ls ? Vue.ls.get('current_locale') || 'en' : 'en', + locale: Vue.ls ? Vue.ls.get('LOCALE') || 'en' : 'en', fallbackLocale: 'en', silentTranslationWarn: true, messages: loadLocaleMessages() diff --git a/ui/src/locales/it_IT.json b/ui/src/locales/it_IT.json index 763c6992279..46d81bfa221 100644 --- a/ui/src/locales/it_IT.json +++ b/ui/src/locales/it_IT.json @@ -861,7 +861,7 @@ "label.instanceport": "Instance Port", "label.instances": "Istanze", "label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade", -"label.intermediate.certificate": "Intermediate certificate {0}", +"label.intermediate.certificate": "Intermediate certificate", "label.internal.dns.1": "DNS 1 Interno", "label.internal.dns.2": "DNS2 Interno", "label.internal.lb": "Internal LB", diff --git a/ui/src/locales/ja_JP.json b/ui/src/locales/ja_JP.json index e24dbd34cc0..5e8dd5b90f6 100644 --- a/ui/src/locales/ja_JP.json +++ b/ui/src/locales/ja_JP.json @@ -860,7 +860,7 @@ "label.instanceport": "\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 \u30dd\u30fc\u30c8", "label.instances": "\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9", "label.instanciate.template.associate.profile.blade": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u4f5c\u6210\u304a\u3088\u3073\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3068\u30d6\u30ec\u30fc\u30c9\u306e\u95a2\u9023\u4ed8\u3051", -"label.intermediate.certificate": "\u4e2d\u9593\u8a3c\u660e\u66f8 {0}", +"label.intermediate.certificate": "\u4e2d\u9593\u8a3c\u660e\u66f8", "label.internal.dns.1": "\u5185\u90e8 DNS 1", "label.internal.dns.2": "\u5185\u90e8 DNS 2", "label.internal.lb": "\u5185\u90e8 LB", diff --git a/ui/src/locales/ko_KR.json b/ui/src/locales/ko_KR.json index 0ebf10d39c4..e737e6b1033 100644 --- a/ui/src/locales/ko_KR.json +++ b/ui/src/locales/ko_KR.json @@ -860,7 +860,7 @@ "label.instanceport": "Instance Port", "label.instances": "\uc778\uc2a4\ud134\uc2a4", "label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade", -"label.intermediate.certificate": "Intermediate certificate {0}", +"label.intermediate.certificate": "Intermediate certificate", "label.internal.dns.1": "\ub0b4\ubd80 DNS 1", "label.internal.dns.2": "\ub0b4\ubd80 DNS 2", "label.internal.lb": "Internal LB", diff --git a/ui/src/locales/nb_NO.json b/ui/src/locales/nb_NO.json index f07e9c93459..69258a58f32 100644 --- a/ui/src/locales/nb_NO.json +++ b/ui/src/locales/nb_NO.json @@ -861,7 +861,7 @@ "label.instanceport": "Instansport", "label.instances": "Instanser", "label.instanciate.template.associate.profile.blade": "Instansier mal og assosier malen med Blade", -"label.intermediate.certificate": "Intermediate sertifikat {0}", +"label.intermediate.certificate": "Intermediate sertifikat", "label.internal.dns.1": "Intern DNS 1", "label.internal.dns.2": "Intern DNS 2", "label.internal.lb": "Intern LB", diff --git a/ui/src/locales/nl_NL.json b/ui/src/locales/nl_NL.json index 533506f5c45..8ed354cee20 100644 --- a/ui/src/locales/nl_NL.json +++ b/ui/src/locales/nl_NL.json @@ -861,7 +861,7 @@ "label.instanceport": "instantie poort", "label.instances": "Instanties", "label.instanciate.template.associate.profile.blade": "Initieer Template en verbind Profiel met Blade", -"label.intermediate.certificate": "Intermediair certificaat {0}", +"label.intermediate.certificate": "Intermediair certificaat", "label.internal.dns.1": "Interne DNS 1", "label.internal.dns.2": "Interne DNS 2", "label.internal.lb": "interne LB", diff --git a/ui/src/locales/pl.json b/ui/src/locales/pl.json index c2ce64eae12..b1943b84724 100644 --- a/ui/src/locales/pl.json +++ b/ui/src/locales/pl.json @@ -861,7 +861,7 @@ "label.instanceport": "Instance Port", "label.instances": "Instancje", "label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade", -"label.intermediate.certificate": "Intermediate certificate {0}", +"label.intermediate.certificate": "Intermediate certificate", "label.internal.dns.1": "Internal DNS 1", "label.internal.dns.2": "Internal DNS 2", "label.internal.lb": "Internal LB", diff --git a/ui/src/locales/pt_BR.json b/ui/src/locales/pt_BR.json index d2a05241d0c..616ec150e5d 100644 --- a/ui/src/locales/pt_BR.json +++ b/ui/src/locales/pt_BR.json @@ -860,7 +860,7 @@ "label.instanceport": "Instanciar Porta", "label.instances": "Inst\u00e2ncias", "label.instanciate.template.associate.profile.blade": "Instancia Template e Associa Perfil \u00e0 L\u00e2mina", -"label.intermediate.certificate": "Certificado intermedi\u00e1rio {0}", +"label.intermediate.certificate": "Certificado intermedi\u00e1rio", "label.internal.dns.1": "DNS 1 Interno", "label.internal.dns.2": "DNS 2 Interno", "label.internal.lb": "LB interno", diff --git a/ui/src/locales/ru_RU.json b/ui/src/locales/ru_RU.json index 51fbe7f1718..202920353ea 100644 --- a/ui/src/locales/ru_RU.json +++ b/ui/src/locales/ru_RU.json @@ -860,7 +860,7 @@ "label.instanceport": "Instance Port", "label.instances": "\u041c\u0430\u0448\u0438\u043d\u044b", "label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade", -"label.intermediate.certificate": "Intermediate certificate {0}", +"label.intermediate.certificate": "Intermediate certificate", "label.internal.dns.1": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 DNS 1", "label.internal.dns.2": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 DNS 2", "label.internal.lb": "Internal LB", diff --git a/ui/src/locales/zh_CN.json b/ui/src/locales/zh_CN.json index 0f7498420bd..b046a6dfe95 100644 --- a/ui/src/locales/zh_CN.json +++ b/ui/src/locales/zh_CN.json @@ -860,7 +860,7 @@ "label.instanceport": "\u5b9e\u4f8b\u7aef\u53e3", "label.instances": "\u5b9e\u4f8b", "label.instanciate.template.associate.profile.blade": "\u5c06\u6a21\u677f\u5b9e\u4f8b\u5316\u5e76\u5c06\u914d\u7f6e\u6587\u4ef6\u4e0e\u5200\u7247\u5f0f\u670d\u52a1\u5668\u5173\u8054", -"label.intermediate.certificate": "\u4e2d\u95f4\u8bc1\u4e66 {0}", +"label.intermediate.certificate": "\u4e2d\u95f4\u8bc1\u4e66", "label.internal.dns.1": "\u5185\u90e8 DNS 1", "label.internal.dns.2": "\u5185\u90e8 DNS 2", "label.internal.lb": "\u5185\u90e8\u8d1f\u8f7d\u5747\u8861\u5668", diff --git a/ui/src/utils/plugins.js b/ui/src/utils/plugins.js index 388270ead59..0e3e7f974dc 100644 --- a/ui/src/utils/plugins.js +++ b/ui/src/utils/plugins.js @@ -99,7 +99,7 @@ export const pollJobPlugin = { }).catch(e => { console.error(`${catchMessage} - ${e}`) notification.error({ - message: 'Error', + message: this.$t('label.error'), description: catchMessage, duration: 0 }) @@ -114,6 +114,7 @@ export const notifierPlugin = { install (Vue) { Vue.prototype.$notifyError = function (error) { + console.log(error) var msg = 'Request Failed' var desc = '' if (error && error.response) { diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue index 76b715b1208..b8a6280b4bd 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -51,7 +51,7 @@ @exec-action="execAction"/> @@ -62,7 +62,7 @@ - + + +
@@ -167,7 +169,7 @@ showSearch optionFilterProp="children" v-decorator="[field.name, { - rules: [{ required: field.required, message: 'Please select option' }] + rules: [{ required: field.required, message: `${$t('message.error.select')}` }] }]" :loading="field.loading" :placeholder="field.description" @@ -186,7 +188,7 @@ showSearch optionFilterProp="children" v-decorator="[field.name, { - rules: [{ required: field.required, message: 'Please select option' }] + rules: [{ required: field.required, message: `${$t('message.error.select')}` }] }]" :loading="field.loading" :placeholder="field.description" @@ -204,7 +206,7 @@ :loading="field.loading" mode="multiple" v-decorator="[field.name, { - rules: [{ required: field.required, message: 'Please select option' }] + rules: [{ required: field.required, message: `${$t('message.error.select')}` }] }]" :placeholder="field.description" > @@ -216,7 +218,7 @@ @@ -224,7 +226,7 @@ @@ -233,7 +235,7 @@ @@ -241,7 +243,7 @@ @@ -487,7 +489,7 @@ export default { customRender[key] = columnKey[key] } this.columns.push({ - title: this.$t('label.' + key), + title: this.$t('label.' + String(key).toLowerCase()), dataIndex: key, scopedSlots: { customRender: key }, sorter: function (a, b) { return genericCompare(a[this.dataIndex] || '', b[this.dataIndex] || '') } diff --git a/ui/src/views/auth/Login.vue b/ui/src/views/auth/Login.vue index acfa06dbbd3..0434f33ffdc 100644 --- a/ui/src/views/auth/Login.vue +++ b/ui/src/views/auth/Login.vue @@ -39,7 +39,7 @@ 0 ? hypervisorSelectOptions[0].value : null, - rules: [{ required: true, message: 'Please select option' }] + rules: [{ required: true, message: `${this.$t('message.error.select')}` }] }]" :options="hypervisorSelectOptions" @change="value => this.hypervisor = value" /> diff --git a/ui/src/views/compute/MigrateWizard.vue b/ui/src/views/compute/MigrateWizard.vue index 3f9e2279ec5..74d7e656dfd 100644 --- a/ui/src/views/compute/MigrateWizard.vue +++ b/ui/src/views/compute/MigrateWizard.vue @@ -18,7 +18,7 @@ - +
diff --git a/ui/src/views/network/InternalLBAssignVmForm.vue b/ui/src/views/network/InternalLBAssignVmForm.vue index f84fe60d156..1d891e9aa9b 100644 --- a/ui/src/views/network/InternalLBAssignVmForm.vue +++ b/ui/src/views/network/InternalLBAssignVmForm.vue @@ -124,7 +124,11 @@ export default { api('listLoadBalancers', { id: this.resource.id }).then(response => { - this.assignedVMs = response.listloadbalancersresponse.loadbalancer[0].loadbalancerinstance || [] + const lb = response.listloadbalancersresponse.loadbalancer + this.assignedVMs = [] + if (Array.isArray(lb) && lb.length) { + this.assignedVMs = lb[0].loadbalancerinstance || [] + } }).finally(() => { this.fetchLoading = false }) diff --git a/ui/src/views/network/LoadBalancing.vue b/ui/src/views/network/LoadBalancing.vue index 330f2633d2c..4ee58627237 100644 --- a/ui/src/views/network/LoadBalancing.vue +++ b/ui/src/views/network/LoadBalancing.vue @@ -131,7 +131,7 @@ @showSizeChange="handleChangePageSize" showSizeChanger/> - + @@ -166,7 +166,7 @@ - + LbCookie AppCookie @@ -186,58 +186,58 @@ - + - + - + - + - + - + - + - + - + - + OK - + diff --git a/ui/src/views/network/VpcTab.vue b/ui/src/views/network/VpcTab.vue index 6bb049ada33..4672c905d7d 100644 --- a/ui/src/views/network/VpcTab.vue +++ b/ui/src/views/network/VpcTab.vue @@ -28,10 +28,10 @@ - + - + - + - + - + @@ -160,7 +160,7 @@ - + - + - + diff --git a/ui/src/views/network/VpcTiersTab.vue b/ui/src/views/network/VpcTiersTab.vue index 81694f94a3e..3e004437ec7 100644 --- a/ui/src/views/network/VpcTiersTab.vue +++ b/ui/src/views/network/VpcTiersTab.vue @@ -134,11 +134,11 @@ + v-decorator="['name',{rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"> + v-decorator="['networkOffering',{rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"> {{ item.name }} @@ -147,12 +147,12 @@ + v-decorator="['gateway',{rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"> + v-decorator="['netmask',{rules: [{ required: true, message: `${this.$t('label.required')}` }]}]"> {{ key }} diff --git a/ui/src/views/offering/AddNetworkOffering.vue b/ui/src/views/offering/AddNetworkOffering.vue index 4003116b23d..4abbd2e577c 100644 --- a/ui/src/views/offering/AddNetworkOffering.vue +++ b/ui/src/views/offering/AddNetworkOffering.vue @@ -170,7 +170,7 @@ rules: [ { required: true, - message: 'Please select option' + message: `${this.$t('message.error.select')}` } ], initialValue: 0 @@ -313,7 +313,7 @@ rules: [ { required: true, - message: 'Please select option' + message: `${this.$t('message.error.select')}` } ] }]" diff --git a/ui/src/views/offering/AddVpcOffering.vue b/ui/src/views/offering/AddVpcOffering.vue index 42eacc546c3..ce47f2c5c0e 100644 --- a/ui/src/views/offering/AddVpcOffering.vue +++ b/ui/src/views/offering/AddVpcOffering.vue @@ -71,7 +71,7 @@ rules: [ { required: true, - message: 'Please select option' + message: `${this.$t('message.error.select')}` } ] }]" diff --git a/ui/src/views/offering/ImportBackupOffering.vue b/ui/src/views/offering/ImportBackupOffering.vue index f25fcdd7bd4..cd845630171 100644 --- a/ui/src/views/offering/ImportBackupOffering.vue +++ b/ui/src/views/offering/ImportBackupOffering.vue @@ -38,7 +38,7 @@ showSearch allowClear v-decorator="['zoneid', { - rules: [{ required: true, message: 'Please select option' }] + rules: [{ required: true, message: `${this.$t('message.error.select')}` }] }]" :loading="zones.loading" @change="onChangeZone"> diff --git a/ui/src/views/offering/UpdateOfferingAccess.vue b/ui/src/views/offering/UpdateOfferingAccess.vue index 7f3c43639f5..e384bf8e7ed 100644 --- a/ui/src/views/offering/UpdateOfferingAccess.vue +++ b/ui/src/views/offering/UpdateOfferingAccess.vue @@ -34,7 +34,7 @@ rules: [ { required: true, - message: 'Please select option' + message: `${this.$t('message.error.select')}` } ], initialValue: this.selectedDomains diff --git a/ui/src/views/project/InvitationTokenTemplate.vue b/ui/src/views/project/InvitationTokenTemplate.vue index bffc9982cc0..2c7fb261675 100644 --- a/ui/src/views/project/InvitationTokenTemplate.vue +++ b/ui/src/views/project/InvitationTokenTemplate.vue @@ -25,7 +25,7 @@ @@ -33,7 +33,7 @@ diff --git a/ui/src/views/project/InvitationsTemplate.vue b/ui/src/views/project/InvitationsTemplate.vue index 6fc6335c455..7d9eb18be1c 100644 --- a/ui/src/views/project/InvitationsTemplate.vue +++ b/ui/src/views/project/InvitationsTemplate.vue @@ -22,7 +22,7 @@ diff --git a/ui/src/views/storage/FormSchedule.vue b/ui/src/views/storage/FormSchedule.vue index f8f7cd3f589..8d5233b104c 100644 --- a/ui/src/views/storage/FormSchedule.vue +++ b/ui/src/views/storage/FormSchedule.vue @@ -58,7 +58,7 @@ @@ -87,7 +87,7 @@ v-decorator="['day-of-week', { rules: [{ required: true, - message: 'Please select option' + message: `${this.$t('message.error.select')}` }] }]" > @@ -102,7 +102,7 @@ v-decorator="['day-of-month', { rules: [{ required: true, - message: 'Please select option' + message: `${this.$t('message.error.select')}` }] }]"> @@ -133,7 +133,7 @@ v-decorator="['timezone', { rules: [{ required: true, - message: 'Please select option' + message: `${this.$t('message.error.select')}` }] }]" :loading="fetching"> diff --git a/ui/src/views/storage/MigrateVolume.vue b/ui/src/views/storage/MigrateVolume.vue index aa61e4fa045..bdebf8e8286 100644 --- a/ui/src/views/storage/MigrateVolume.vue +++ b/ui/src/views/storage/MigrateVolume.vue @@ -89,7 +89,9 @@ export default { id: this.resource.id }).then(response => { this.storagePools = response.findstoragepoolsformigrationresponse.storagepool || [] - this.selectedStoragePool = this.storagePools[0].id || '' + if (Array.isArray(this.storagePools) && this.storagePools.length) { + this.selectedStoragePool = this.storagePools[0].id || '' + } }).catch(error => { this.$notifyError(error) this.closeModal() @@ -99,7 +101,9 @@ export default { zoneid: this.resource.zoneid }).then(response => { this.storagePools = response.liststoragepoolsresponse.storagepool || [] - this.selectedStoragePool = this.storagePools[0].id || '' + if (Array.isArray(this.storagePools) && this.storagePools.length) { + this.selectedStoragePool = this.storagePools[0].id || '' + } }).catch(error => { this.$notifyError(error) this.closeModal() diff --git a/ui/src/views/storage/ResizeVolume.vue b/ui/src/views/storage/ResizeVolume.vue index 369797bea01..1b4b8d75e3b 100644 --- a/ui/src/views/storage/ResizeVolume.vue +++ b/ui/src/views/storage/ResizeVolume.vue @@ -22,7 +22,7 @@

@@ -58,7 +58,7 @@ rules: [ { required: true, - message: 'Please select option' + message: `${this.$t('message.error.select')}` } ] }]"> @@ -74,7 +74,7 @@ rules: [ { required: false, - message: 'Please select option' + message: `${this.$t('message.error.select')}` } ] }]">