From 4f97fea9ea95bc7e95d9cb4159c19f1496e7febc Mon Sep 17 00:00:00 2001 From: Hoang Nguyen Date: Mon, 27 Jul 2020 14:33:31 +0700 Subject: [PATCH] src: fix doclinks and translation across UI (#481) Signed-off-by: Rohit Yadav --- ui/src/components/header/HeaderNotice.vue | 2 +- ui/src/components/view/DedicateData.vue | 26 +- ui/src/components/view/DedicateDomain.vue | 2 +- ui/src/components/view/DedicateModal.vue | 24 +- ui/src/components/view/DetailSettings.vue | 12 +- ui/src/components/view/DetailsTab.vue | 4 + ui/src/components/view/InfoCard.vue | 48 +- ui/src/components/view/ListResourceTable.vue | 6 +- ui/src/components/view/ListView.vue | 22 +- ui/src/components/view/ResourceCountUsage.vue | 4 +- ui/src/components/view/ResourceLimitTab.vue | 4 +- ui/src/components/view/SettingsTab.vue | 9 +- ui/src/components/widgets/Breadcrumb.vue | 8 +- ui/src/config/section/compute.js | 1 - ui/src/config/section/image.js | 2 + .../config/section/infra/primaryStorages.js | 1 + .../config/section/infra/secondaryStorages.js | 1 + ui/src/config/section/offering.js | 2 + ui/src/config/section/plugin/quota.js | 1 + ui/src/config/section/project.js | 6 +- ui/src/config/section/storage.js | 11 + ui/src/locales/en.json | 460 +++++++++++++++++- ui/src/permission.js | 4 +- ui/src/store/modules/user.js | 5 +- ui/src/utils/plugins.js | 14 +- ui/src/utils/request.js | 13 +- ui/src/views/AutogenView.vue | 4 +- ui/src/views/auth/Login.vue | 11 +- ui/src/views/compute/ChangeAffinity.vue | 2 +- .../views/compute/CreateKubernetesCluster.vue | 26 +- ui/src/views/compute/CreateSSHKeyPair.vue | 12 +- ui/src/views/compute/DeployVM.vue | 12 +- ui/src/views/compute/DestoryVM.vue | 6 +- ui/src/views/compute/InstanceTab.vue | 72 +-- ui/src/views/compute/KubernetesServiceTab.vue | 39 +- ui/src/views/compute/MigrateWizard.vue | 16 +- .../views/compute/ScaleKubernetesCluster.vue | 8 +- ui/src/views/compute/ScaleVM.vue | 8 +- .../compute/UpgradeKubernetesCluster.vue | 7 +- .../views/compute/backup/BackupSchedule.vue | 6 +- ui/src/views/compute/backup/FormSchedule.vue | 6 +- .../compute/wizard/AffinityGroupSelection.vue | 2 +- .../wizard/ComputeOfferingSelection.vue | 2 +- .../views/compute/wizard/ComputeSelection.vue | 2 +- .../compute/wizard/DiskOfferingSelection.vue | 2 +- .../compute/wizard/DiskSizeSelection.vue | 2 +- .../views/compute/wizard/NetworkSelection.vue | 2 +- .../compute/wizard/SshKeyPairSelection.vue | 2 +- .../compute/wizard/TemplateIsoRadioGroup.vue | 2 +- ui/src/views/dashboard/CapacityDashboard.vue | 2 +- ui/src/views/dashboard/UsageDashboard.vue | 4 +- ui/src/views/exception/ExceptionPage.vue | 2 +- ui/src/views/iam/AddAccount.vue | 16 +- ui/src/views/iam/AddLdapAccount.vue | 8 +- ui/src/views/iam/ChangeUserPassword.vue | 8 +- ui/src/views/iam/ConfigureSamlSsoAuth.vue | 8 +- ui/src/views/iam/DomainActionForm.vue | 6 +- ui/src/views/iam/DomainView.vue | 2 +- ui/src/views/iam/PermissionEditable.vue | 4 +- ui/src/views/iam/RolePermissionTab.vue | 6 +- ui/src/views/iam/RuleDelete.vue | 4 +- ui/src/views/iam/SSLCertificateTab.vue | 14 +- .../image/AddKubernetesSupportedVersion.vue | 20 +- ui/src/views/image/IsoZones.vue | 12 +- ui/src/views/image/RegisterOrUploadIso.vue | 24 +- .../views/image/RegisterOrUploadTemplate.vue | 22 +- ui/src/views/image/TemplateZones.vue | 12 +- .../UpdateKubernetesSupportedVersion.vue | 2 +- .../image/UpdateTemplateIsoPermissions.vue | 35 +- ui/src/views/image/UploadLocalIso.vue | 2 +- ui/src/views/image/UploadLocalTemplate.vue | 2 +- ui/src/views/infra/AddPrimaryStorage.vue | 34 +- ui/src/views/infra/AddSecondaryStorage.vue | 20 +- ui/src/views/infra/ClusterAdd.vue | 12 +- ui/src/views/infra/HostAdd.vue | 20 +- ui/src/views/infra/InfraSummary.vue | 26 +- ui/src/views/infra/PodAdd.vue | 22 +- .../views/infra/network/DedicatedVLANTab.vue | 26 +- .../infra/network/IpRangesTabManagement.vue | 28 +- .../views/infra/network/IpRangesTabPublic.vue | 17 +- .../infra/network/IpRangesTabStorage.vue | 28 +- .../infra/network/ServiceProvidersTab.vue | 6 +- .../views/infra/network/TrafficTypesTab.vue | 2 +- .../network/providers/AddF5LoadBalancer.vue | 6 +- .../providers/AddNetscalerLoadBalancer.vue | 6 +- .../network/providers/AddNiciraNvpDevice.vue | 6 +- .../network/providers/AddPaloAltoFirewall.vue | 6 +- .../network/providers/AddSrxFirewall.vue | 6 +- .../infra/network/providers/ProviderItem.vue | 2 +- .../network/providers/ProviderListView.vue | 6 +- .../infra/zone/AdvancedGuestTrafficForm.vue | 6 +- .../views/infra/zone/IpAddressRangeForm.vue | 14 +- ui/src/views/infra/zone/StaticInputsForm.vue | 10 +- ui/src/views/infra/zone/SystemVmsTab.vue | 4 +- ui/src/views/infra/zone/ZoneWizard.vue | 22 +- .../infra/zone/ZoneWizardAddResources.vue | 88 ++-- .../views/infra/zone/ZoneWizardLaunchZone.vue | 32 +- .../infra/zone/ZoneWizardNetworkSetupStep.vue | 14 +- .../ZoneWizardPhysicalNetworkSetupStep.vue | 8 +- .../infra/zone/ZoneWizardZoneDetailsStep.vue | 44 +- .../infra/zone/ZoneWizardZoneTypeStep.vue | 2 +- ui/src/views/network/AclListRulesTab.vue | 88 ++-- .../network/CreateIsolatedNetworkForm.vue | 10 +- ui/src/views/network/CreateL2NetworkForm.vue | 10 +- .../views/network/CreateSharedNetworkForm.vue | 14 +- .../network/CreateVpnCustomerGateway.vue | 20 +- ui/src/views/network/EgressRulesTab.vue | 32 +- ui/src/views/network/EnableStaticNat.vue | 6 +- ui/src/views/network/FirewallRules.vue | 34 +- .../network/IngressEgressRuleConfigure.vue | 60 +-- .../views/network/InternalLBAssignVmForm.vue | 14 +- .../views/network/InternalLBAssignedVmTab.vue | 10 +- ui/src/views/network/IpAddressesTab.vue | 22 +- ui/src/views/network/LoadBalancing.vue | 130 ++--- ui/src/views/network/NicsTable.vue | 2 +- ui/src/views/network/PortForwarding.vue | 54 +- ui/src/views/network/StaticRoutesTab.vue | 36 +- ui/src/views/network/VpcTab.vue | 58 +-- ui/src/views/network/VpcTiersTab.vue | 46 +- ui/src/views/network/VpnDetails.vue | 48 +- ui/src/views/offering/AddComputeOffering.vue | 15 +- ui/src/views/offering/AddDiskOffering.vue | 4 +- ui/src/views/offering/AddNetworkOffering.vue | 8 +- ui/src/views/offering/AddVpcOffering.vue | 8 +- .../views/offering/ImportBackupOffering.vue | 10 +- .../views/offering/UpdateOfferingAccess.vue | 2 +- ui/src/views/plugins/CloudianPlugin.vue | 6 +- .../plugins/quota/EditTariffValueWizard.vue | 2 +- ui/src/views/project/AccountsTab.vue | 13 +- .../views/project/InvitationTokenTemplate.vue | 2 +- ui/src/views/project/InvitationsTemplate.vue | 12 +- ui/src/views/storage/CreateVolume.vue | 18 +- ui/src/views/storage/FormSchedule.vue | 12 +- ui/src/views/storage/MigrateVolume.vue | 10 +- ui/src/views/storage/ResizeVolume.vue | 12 +- .../storage/RestoreAttachBackupVolume.vue | 6 +- ui/src/views/storage/ScheduledSnapshots.vue | 8 +- ui/src/views/storage/TakeSnapshot.vue | 8 +- ui/src/views/storage/UploadLocalVolume.vue | 20 +- 139 files changed, 1524 insertions(+), 1027 deletions(-) diff --git a/ui/src/components/header/HeaderNotice.vue b/ui/src/components/header/HeaderNotice.vue index ab9247e4202..03a5acd2017 100644 --- a/ui/src/components/header/HeaderNotice.vue +++ b/ui/src/components/header/HeaderNotice.vue @@ -110,7 +110,7 @@ export default { }) } }).catch(function (e) { - console.log('Error encountered while fetching async job result' + e) + console.log(this.$t('error.fetching.async.job.result') + e) }) } } diff --git a/ui/src/components/view/DedicateData.vue b/ui/src/components/view/DedicateData.vue index 5c9bea3567b..af50eac2b41 100644 --- a/ui/src/components/view/DedicateData.vue +++ b/ui/src/components/view/DedicateData.vue @@ -20,7 +20,7 @@
{{ $t('label.dedicated') }} -
Yes
+
{{ $t('label.yes') }}

{{ $t('label.domainid') }}
@@ -38,7 +38,7 @@

{{ $t('label.dedicated') }} -
No
+
{{ $t('label.no') }}
{{ dedicatedButtonLabel }} @@ -71,9 +71,9 @@ export default { return { modalActive: false, dedicateButtonAvailable: true, - dedicatedButtonLabel: 'Dedicate', - releaseButtonLabel: 'Release', - dedicatedModalLabel: 'Dedicate', + dedicatedButtonLabel: this.$t('label.dedicate'), + releaseButtonLabel: this.$t('label.release'), + dedicatedModalLabel: this.$t('label.dedicate'), dedicatedDomainId: null, dedicatedAccountId: null } @@ -185,12 +185,12 @@ export default { status: 'progress' }) }, - errorMessage: 'Failed to release dedicated zone', + errorMessage: this.$t('error.release.dedicate.zone'), errorMethod: () => { this.parentFetchData() }, loadingMessage: this.$t('message.releasing.dedicated.zone'), - catchMessage: 'Error encountered while fetching async job result', + catchMessage: this.$t('error.fetching.async.job.result'), catchMethod: () => { this.parentFetchData() } @@ -215,12 +215,12 @@ export default { status: 'progress' }) }, - errorMessage: 'Failed to release dedicated pod', + errorMessage: this.$t('error.release.dedicate.pod'), errorMethod: () => { this.parentFetchData() }, loadingMessage: this.$t('message.releasing.dedicated.pod'), - catchMessage: 'Error encountered while fetching async job result', + catchMessage: this.$t('error.fetching.async.job.result'), catchMethod: () => { this.parentFetchData() } @@ -245,12 +245,12 @@ export default { status: 'progress' }) }, - errorMessage: 'Failed to release dedicated cluster', + errorMessage: this.$t('error.release.dedicate.cluster'), errorMethod: () => { this.parentFetchData() }, loadingMessage: this.$t('message.releasing.dedicated.cluster'), - catchMessage: 'Error encountered while fetching async job result', + catchMessage: this.$t('error.fetching.async.job.result'), catchMethod: () => { this.parentFetchData() } @@ -275,12 +275,12 @@ export default { status: 'progress' }) }, - errorMessage: 'Failed to release dedicated host', + errorMessage: this.$t('error.release.dedicate.host'), errorMethod: () => { this.parentFetchData() }, loadingMessage: this.$t('message.releasing.dedicated.host'), - catchMessage: 'Error encountered while fetching async job result', + catchMessage: this.$t('error.fetching.async.job.result'), catchMethod: () => { this.parentFetchData() } diff --git a/ui/src/components/view/DedicateDomain.vue b/ui/src/components/view/DedicateDomain.vue index 01d730647b2..555a55e14b8 100644 --- a/ui/src/components/view/DedicateDomain.vue +++ b/ui/src/components/view/DedicateDomain.vue @@ -29,7 +29,7 @@
-

Account

+

{{ $t('label.account') }}

{{ account.name }} diff --git a/ui/src/components/view/DedicateModal.vue b/ui/src/components/view/DedicateModal.vue index a518520d8d0..9cabd23595b 100644 --- a/ui/src/components/view/DedicateModal.vue +++ b/ui/src/components/view/DedicateModal.vue @@ -99,18 +99,18 @@ export default { this.$store.dispatch('AddAsyncJob', { title: this.$t('label.zone.dedicated'), jobid: response.dedicatezoneresponse.jobid, - description: `Domain ID: ${this.dedicatedDomainId}`, + description: `${this.$t('label.domain.id')} : ${this.dedicatedDomainId}`, status: 'progress' }) }, - errorMessage: 'Failed to dedicate zone', + errorMessage: this.$t('error.dedicate.zone.failed'), errorMethod: () => { this.parentFetchData() this.fetchParentData() this.dedicatedDomainModal = false }, loadingMessage: this.$t('message.dedicating.zone'), - catchMessage: 'Error encountered while fetching async job result', + catchMessage: this.$t('error.fetching.async.job.result'), catchMethod: () => { this.parentFetchData() this.fetchParentData() @@ -143,18 +143,18 @@ export default { this.$store.dispatch('AddAsyncJob', { title: this.$t('label.pod.dedicated'), jobid: response.dedicatepodresponse.jobid, - description: `Domain ID: ${this.dedicatedDomainId}`, + description: `${this.$t('label.domainid')}: ${this.dedicatedDomainId}`, status: 'progress' }) }, - errorMessage: 'Failed to dedicate pod', + errorMessage: this.$t('error.dedicate.pod.failed'), errorMethod: () => { this.parentFetchData() this.fetchParentData() this.dedicatedDomainModal = false }, loadingMessage: this.$t('message.dedicating.pod'), - catchMessage: 'Error encountered while fetching async job result', + catchMessage: this.$t('error.fetching.async.job.result'), catchMethod: () => { this.parentFetchData() this.fetchParentData() @@ -187,18 +187,18 @@ export default { this.$store.dispatch('AddAsyncJob', { title: this.$t('message.cluster.dedicated'), jobid: response.dedicateclusterresponse.jobid, - description: `Domain ID: ${this.dedicatedDomainId}`, + description: `${this.$t('label.domainid')}: ${this.dedicatedDomainId}`, status: 'progress' }) }, - errorMessage: 'Failed to dedicate cluster', + errorMessage: this.$t('error.dedicate.cluster.failed'), errorMethod: () => { this.parentFetchData() this.fetchParentData() this.dedicatedDomainModal = false }, loadingMessage: this.$t('message.dedicating.cluster'), - catchMessage: 'Error encountered while fetching async job result', + catchMessage: this.$t('error.fetching.async.job.result'), catchMethod: () => { this.parentFetchData() this.fetchParentData() @@ -231,18 +231,18 @@ export default { this.$store.dispatch('AddAsyncJob', { title: this.$t('message.host.dedicated'), jobid: response.dedicatehostresponse.jobid, - description: `Domain ID: ${this.dedicatedDomainId}`, + description: `${this.$t('label.domainid')}: ${this.dedicatedDomainId}`, status: 'progress' }) }, - errorMessage: 'Failed to dedicate host', + errorMessage: this.$t('error.dedicate.host.failed'), errorMethod: () => { this.parentFetchData() this.fetchParentData() this.dedicatedDomainModal = false }, loadingMessage: this.$t('message.dedicating.host'), - catchMessage: 'Error encountered while fetching async job result', + catchMessage: this.$t('error.fetching.async.job.result'), catchMethod: () => { this.parentFetchData() this.fetchParentData() diff --git a/ui/src/components/view/DetailSettings.vue b/ui/src/components/view/DetailSettings.vue index 641f25f5551..2866d138bfe 100644 --- a/ui/src/components/view/DetailSettings.vue +++ b/ui/src/components/view/DetailSettings.vue @@ -85,10 +85,10 @@
@@ -185,8 +185,8 @@ export default { } if (!(apiName in this.$store.getters.apis)) { this.$notification.error({ - message: 'Failed to execute API: ' + apiName, - description: 'User is not permitted to use the API' + message: this.$t('error.execute.api.failed') + ' ' + apiName, + description: this.$t('message.user.not.permitted.api') }) return } @@ -221,7 +221,7 @@ export default { }, addDetail () { if (this.newKey === '' || this.newValue === '') { - this.error = 'Must provide a valid key and value for setting' + this.error = this.$t('message.error.provide.setting') return } this.error = false diff --git a/ui/src/components/view/DetailsTab.vue b/ui/src/components/view/DetailsTab.vue index cfa340fd665..f07411859c2 100644 --- a/ui/src/components/view/DetailsTab.vue +++ b/ui/src/components/view/DetailsTab.vue @@ -33,6 +33,10 @@ {{ volume.type }} - {{ volume.path }} ({{ parseFloat(volume.size / (1024.0 * 1024.0 * 1024.0)).toFixed(1) }} GB)
+
+ {{ $t(resource[item].toLowerCase()) }} + {{ resource[item] }} +
{{ resource[item] }}
diff --git a/ui/src/components/view/InfoCard.vue b/ui/src/components/view/InfoCard.vue index 4cad5c813f4..adf936f90e1 100644 --- a/ui/src/components/view/InfoCard.vue +++ b/ui/src/components/view/InfoCard.vue @@ -29,10 +29,13 @@ -

- {{ resource.displayname || resource.displaytext || resource.name || resource.hostname || resource.username || resource.ipaddress || resource.virtualmachinename || resource.templatetype }} -

- +
{{ $t(resource.name.toLowerCase()) }}
+
+

+ {{ resource.displayname || resource.displaytext || resource.name || resource.hostname || resource.username || resource.ipaddress || resource.virtualmachinename || resource.templatetype }} +

+ +
@@ -41,7 +44,10 @@ {{ resource.instancename }} - {{ resource.type }} + {{ $t(resource.type.toLowerCase()) }} + + {{ resource.type }} + {{ $t('label.issourcenat') }} @@ -94,7 +100,7 @@
{{ resource.id }} @@ -146,7 +152,7 @@
{{ $t('label.memory') }}
- {{ resource.memory }} MB Memory + {{ resource.memory + ' ' + $t('label.mb.memory') }}
@@ -163,7 +169,7 @@
{{ $t('label.memory') }}
- {{ resource.memorytotalgb }} Memory + {{ resource.memorytotalgb + ' ' + $t('label.memory') }}
@@ -191,7 +197,7 @@
- {{ resource.memorytotal }} Memory + {{ resource.memorytotal + ' ' + $t('label.memory') }}
{{ resource.sizegb || (resource.size/1024.0) }}
- Read {{ toSize(resource.diskkbsread) }} - Write {{ toSize(resource.diskkbswrite) }}
- Read (IO) {{ resource.diskioread }} - Write (IO) {{ resource.diskiowrite }} + {{ $t('label.read') + ' ' + toSize(resource.diskkbsread) }} + {{ $t('label.write') + ' ' + toSize(resource.diskkbswrite) }}
+ {{ $t('label.read.io') + ' ' + resource.diskioread }} + {{ $t('label.writeio') + ' ' + resource.diskiowrite }}
@@ -259,8 +265,8 @@
- RX {{ toSize(resource.networkkbsread) }} - TX {{ toSize(resource.networkkbswrite) }} + RX {{ toSize(resource.networkkbsread) }} + TX {{ toSize(resource.networkkbswrite) }}
{{ resource.nic.length }} NIC(s)
- View {{ $t(item.title) }} + {{ $t('label.view') + ' ' + $t(item.title) }}
@@ -513,9 +519,9 @@ {{ $t('label.apikey') }} - + @@ -530,9 +536,9 @@ {{ $t('label.secretkey') }} - + diff --git a/ui/src/components/view/ListResourceTable.vue b/ui/src/components/view/ListResourceTable.vue index a582c9c1b22..7ac54d8755d 100644 --- a/ui/src/components/view/ListResourceTable.vue +++ b/ui/src/components/view/ListResourceTable.vue @@ -56,8 +56,8 @@ :current="options.page" :pageSize="options.pageSize" :total="total" - :showTotal="total => `Total ${total} ${$t('label.items')}`" - :pageSizeOptions="['10', '20', '40']" + :showTotal="total => `${$t('label.total')} ${total} ${$t('label.items')}`" + :pageSizeOptions="device === 'desktop' ? ['20', '50', '100', '500'] : ['10', '20', '50', '100', '500']" @change="handleTableChange" @showSizeChange="handlePageSizeChange" showSizeChanger> @@ -72,6 +72,7 @@