dashboard-shell-shell 3.0.5-test.4 → 3.0.5-test.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/brand/csp/favicon.png +0 -0
- package/assets/icons/iconfont.css +4 -1
- package/assets/images/pl/dark/logo.png +0 -0
- package/assets/styles/all.scss +23 -3
- package/assets/styles/base/_variables.scss +5 -5
- package/assets/styles/fonts/_icons.scss +3 -2
- package/assets/styles/global/_button.scss +8 -8
- package/assets/styles/global/_form.scss +1 -0
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +9 -5
- package/assets/styles/themes/_light.scss +6 -4
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +59 -0
- package/assets/translations/zh-hans.yaml +175 -15
- package/components/ActionDropdown.vue +1 -1
- package/components/ButtonDropdown.vue +3 -1
- package/components/CodeMirror.vue +6 -4
- package/components/ContainerResourceLimit.vue +2 -2
- package/components/CopyToClipboard.vue +15 -0
- package/components/Drawer/Chrome.vue +2 -2
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +30 -27
- package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
- package/components/Drawer/ResourceDetailDrawer/index.vue +5 -4
- package/components/ExplorerMembers.vue +28 -4
- package/components/GlobalRoleBindings.vue +51 -112
- package/components/PodSecurityAdmission.vue +2 -2
- package/components/PromptRemove.vue +17 -1
- package/components/RelatedResources.vue +3 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
- package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
- package/components/Resource/Detail/Metadata/index.vue +3 -1
- package/components/Resource/Detail/TitleBar/Title.vue +4 -3
- package/components/Resource/Detail/TitleBar/Top.vue +2 -0
- package/components/Resource/Detail/TitleBar/composables.ts +16 -1
- package/components/Resource/Detail/TitleBar/index.vue +123 -25
- package/components/ResourceDetail/Masthead/index.vue +1 -1
- package/components/ResourceDetail/Masthead/latest.vue +1 -1
- package/components/ResourceDetail/Masthead/legacy.vue +8 -7
- package/components/ResourceDetail/legacy.vue +18 -16
- package/components/ResourceList/Masthead.vue +13 -17
- package/components/ResourceTable.vue +10 -0
- package/components/SideNav.vue +21 -21
- package/components/SortableTable/THead.vue +46 -1
- package/components/SortableTable/index.vue +40 -20
- package/components/Tabbed/index.vue +6 -1
- package/components/auth/Principal.vue +10 -5
- package/components/auth/RoleDetailEdit.vue +11 -7
- package/components/breadcrumb/index.vue +119 -0
- package/components/form/ArrayList.vue +164 -147
- package/components/form/ArrayListGrouped.vue +5 -3
- package/components/form/ChangePassword.vue +1 -1
- package/components/form/Command.vue +4 -5
- package/components/form/Conditions.vue +15 -1
- package/components/form/Footer.vue +1 -0
- package/components/form/HealthCheck.vue +0 -2
- package/components/form/HookOption.vue +87 -58
- package/components/form/InputWithSelect.vue +8 -7
- package/components/form/KeyValue.vue +20 -2
- package/components/form/LabeledSelect.vue +6 -3
- package/components/form/Labels.vue +2 -2
- package/components/form/MatchExpressions.vue +4 -4
- package/components/form/Members/ClusterMembershipEditor.vue +1 -1
- package/components/form/Members/ClusterPermissionsEditor.vue +31 -28
- package/components/form/Members/MembershipEditor.vue +2 -2
- package/components/form/NameNsDescription.vue +1 -1
- package/components/form/Networking.vue +6 -9
- package/components/form/NodeAffinity.vue +29 -28
- package/components/form/PodAffinity.vue +23 -23
- package/components/form/Probe.vue +15 -11
- package/components/form/ProjectMemberEditor.vue +28 -25
- package/components/form/ResourceQuota/Namespace.vue +4 -4
- package/components/form/ResourceQuota/NamespaceRow.vue +11 -9
- package/components/form/ResourceQuota/Project.vue +4 -4
- package/components/form/ResourceQuota/ProjectRow.vue +36 -30
- package/components/form/ResourceSelector.vue +1 -1
- package/components/form/Security.vue +1 -3
- package/components/form/Select.vue +7 -1
- package/components/form/ServiceNameSelect.vue +2 -5
- package/components/form/ServicePorts.vue +149 -75
- package/components/form/Taints.vue +2 -1
- package/components/form/Tolerations.vue +13 -9
- package/components/form/ValueFromResource.vue +110 -96
- package/components/form/WorkloadPorts.vue +143 -123
- package/components/formatter/WorkloadHealthScale.vue +4 -3
- package/components/nav/Group.vue +6 -0
- package/components/nav/Header.vue +7 -4
- package/components/nav/NamespaceFilter.vue +15 -21
- package/components/nav/TopLevelMenu.vue +99 -125
- package/components/nav/Type.vue +11 -3
- package/config/menuRouteMap.js +10 -0
- package/config/product/explorer.js +31 -9
- package/config/product/manager.js +28 -17
- package/config/router/navigation-guards/index.js +61 -3
- package/detail/node.vue +28 -23
- package/dialog/AddCustomBadgeDialog.vue +17 -9
- package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
- package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
- package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
- package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
- package/edit/configmap.vue +4 -0
- package/edit/networking.k8s.io.ingress/Certificate.vue +14 -5
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
- package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
- package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
- package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
- package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
- package/edit/persistentvolume/index.vue +3 -1
- package/edit/persistentvolumeclaim.vue +2 -0
- package/edit/secret/index.vue +2 -2
- package/edit/service.vue +4 -1
- package/edit/storage.k8s.io.storageclass/index.vue +10 -8
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
- package/edit/workload/Job.vue +31 -34
- package/edit/workload/Upgrading.vue +5 -5
- package/edit/workload/index.vue +22 -18
- package/edit/workload/storage/Mount.vue +1 -0
- package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
- package/edit/workload/storage/azureDisk.vue +14 -10
- package/edit/workload/storage/azureFile.vue +9 -7
- package/edit/workload/storage/csi/index.vue +6 -9
- package/edit/workload/storage/emptyDir.vue +7 -5
- package/edit/workload/storage/gcePersistentDisk.vue +9 -7
- package/edit/workload/storage/hostPath.vue +7 -5
- package/edit/workload/storage/nfs.vue +8 -6
- package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
- package/edit/workload/storage/secret.vue +9 -6
- package/edit/workload/storage/vsphereVolume.vue +11 -7
- package/initialize/app-extended.js +7 -1
- package/models/provisioning.cattle.io.cluster.js +19 -18
- package/package.json +1 -1
- package/pages/account/index.vue +90 -118
- package/pages/account/pri.vue +229 -0
- package/pages/auth/login.vue +6 -1
- package/pages/auth/setup.vue +36 -17
- package/pages/c/_cluster/_product/namespaces.vue +1 -1
- package/pages/c/_cluster/auth/roles/index.vue +38 -5
- package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
- package/pages/c/_cluster/explorer/tools/index.vue +6 -6
- package/pages/home.vue +3 -4
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/plugins/dashboard-store/resource-class.js +28 -27
- package/rancher-components/BadgeState/BadgeState.vue +33 -52
- package/rancher-components/Banner/Banner.vue +12 -2
- package/rancher-components/Form/Radio/RadioGroup.vue +9 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
- package/rancher-components/RcDropdown/RcDropdownMenu.vue +8 -7
- package/scripts/publish-shell.sh +1 -1
- package/store/i18n.js +4 -0
- package/store/type-map.js +1 -3
- package/types/shell/index.d.ts +4 -30
- package/utils/error.js +3 -1
- package/utils/errorTranslate.json +416 -2
- package/vue.config.js +1 -1
package/store/i18n.js
CHANGED
|
@@ -108,6 +108,7 @@ export const getters = {
|
|
|
108
108
|
...args
|
|
109
109
|
};
|
|
110
110
|
|
|
111
|
+
moreArgs['count'] = moreArgs['count'] !== undefined ? moreArgs['count'] : 1
|
|
111
112
|
return formatter.format(moreArgs);
|
|
112
113
|
} else {
|
|
113
114
|
return '?';
|
|
@@ -231,6 +232,9 @@ export const actions = {
|
|
|
231
232
|
if ( !selected || !exists) {
|
|
232
233
|
selected = 'zh-hans';
|
|
233
234
|
}
|
|
235
|
+
|
|
236
|
+
// selected = 'none'
|
|
237
|
+
selected = 'zh-hans'
|
|
234
238
|
|
|
235
239
|
return dispatch('switchTo', selected);
|
|
236
240
|
},
|
package/store/type-map.js
CHANGED
|
@@ -515,7 +515,7 @@ export const getters = {
|
|
|
515
515
|
|
|
516
516
|
groupsForVirTypes(state) {
|
|
517
517
|
return (product, name) => {
|
|
518
|
-
return state
|
|
518
|
+
return state?.virtualTypes?.[product]?.find(item => item.name === name)?.icon;
|
|
519
519
|
};
|
|
520
520
|
},
|
|
521
521
|
|
|
@@ -823,9 +823,7 @@ export const getters = {
|
|
|
823
823
|
}
|
|
824
824
|
|
|
825
825
|
if ( icon ) {
|
|
826
|
-
console.log(icon)
|
|
827
826
|
label = `<i class="icon icon-fw icon-${ icon }"></i>${ label }`;
|
|
828
|
-
console.log(label)
|
|
829
827
|
}
|
|
830
828
|
|
|
831
829
|
return label;
|
package/types/shell/index.d.ts
CHANGED
|
@@ -3053,37 +3053,24 @@ export default class Resource {
|
|
|
3053
3053
|
divider: boolean;
|
|
3054
3054
|
action?: undefined;
|
|
3055
3055
|
label?: undefined;
|
|
3056
|
-
icon?: undefined;
|
|
3057
3056
|
enabled?: undefined;
|
|
3057
|
+
altAction?: undefined;
|
|
3058
3058
|
bulkable?: undefined;
|
|
3059
3059
|
bulkAction?: undefined;
|
|
3060
3060
|
weight?: undefined;
|
|
3061
|
-
altAction?: undefined;
|
|
3062
3061
|
} | {
|
|
3063
3062
|
action: string;
|
|
3064
3063
|
label: any;
|
|
3065
|
-
icon: string;
|
|
3066
3064
|
enabled: any;
|
|
3067
3065
|
divider?: undefined;
|
|
3066
|
+
altAction?: undefined;
|
|
3068
3067
|
bulkable?: undefined;
|
|
3069
3068
|
bulkAction?: undefined;
|
|
3070
3069
|
weight?: undefined;
|
|
3071
|
-
altAction?: undefined;
|
|
3072
|
-
} | {
|
|
3073
|
-
action: string;
|
|
3074
|
-
label: any;
|
|
3075
|
-
icon: string;
|
|
3076
|
-
bulkable: boolean;
|
|
3077
|
-
bulkAction: string;
|
|
3078
|
-
enabled: boolean;
|
|
3079
|
-
weight: number;
|
|
3080
|
-
divider?: undefined;
|
|
3081
|
-
altAction?: undefined;
|
|
3082
3070
|
} | {
|
|
3083
3071
|
action: string;
|
|
3084
3072
|
altAction: string;
|
|
3085
3073
|
label: any;
|
|
3086
|
-
icon: string;
|
|
3087
3074
|
bulkable: boolean;
|
|
3088
3075
|
enabled: any;
|
|
3089
3076
|
bulkAction: string;
|
|
@@ -3095,37 +3082,24 @@ export default class Resource {
|
|
|
3095
3082
|
divider: boolean;
|
|
3096
3083
|
action?: undefined;
|
|
3097
3084
|
label?: undefined;
|
|
3098
|
-
icon?: undefined;
|
|
3099
3085
|
enabled?: undefined;
|
|
3086
|
+
altAction?: undefined;
|
|
3100
3087
|
bulkable?: undefined;
|
|
3101
3088
|
bulkAction?: undefined;
|
|
3102
3089
|
weight?: undefined;
|
|
3103
|
-
altAction?: undefined;
|
|
3104
3090
|
} | {
|
|
3105
3091
|
action: string;
|
|
3106
3092
|
label: any;
|
|
3107
|
-
icon: string;
|
|
3108
3093
|
enabled: any;
|
|
3109
3094
|
divider?: undefined;
|
|
3095
|
+
altAction?: undefined;
|
|
3110
3096
|
bulkable?: undefined;
|
|
3111
3097
|
bulkAction?: undefined;
|
|
3112
3098
|
weight?: undefined;
|
|
3113
|
-
altAction?: undefined;
|
|
3114
|
-
} | {
|
|
3115
|
-
action: string;
|
|
3116
|
-
label: any;
|
|
3117
|
-
icon: string;
|
|
3118
|
-
bulkable: boolean;
|
|
3119
|
-
bulkAction: string;
|
|
3120
|
-
enabled: boolean;
|
|
3121
|
-
weight: number;
|
|
3122
|
-
divider?: undefined;
|
|
3123
|
-
altAction?: undefined;
|
|
3124
3099
|
} | {
|
|
3125
3100
|
action: string;
|
|
3126
3101
|
altAction: string;
|
|
3127
3102
|
label: any;
|
|
3128
|
-
icon: string;
|
|
3129
3103
|
bulkable: boolean;
|
|
3130
3104
|
enabled: any;
|
|
3131
3105
|
bulkAction: string;
|
package/utils/error.js
CHANGED
|
@@ -199,9 +199,11 @@ export function translateError(error) {
|
|
|
199
199
|
|
|
200
200
|
if (matches) {
|
|
201
201
|
if (matches.length == 1) {
|
|
202
|
+
console.log('00045', error);
|
|
202
203
|
error = error.replace(regex, translation.replacement);
|
|
203
204
|
} else {
|
|
204
|
-
error = translation.
|
|
205
|
+
error = error.replace(regex, (...args) => translation.replacement.replace(/\$([1-9]\d*)/g, (_, idx) => args[Number(idx)] || ''))
|
|
206
|
+
console.log('00046', error);
|
|
205
207
|
}
|
|
206
208
|
}
|
|
207
209
|
}
|
|
@@ -1,5 +1,411 @@
|
|
|
1
1
|
{
|
|
2
2
|
"translations": [
|
|
3
|
+
{
|
|
4
|
+
"pattern": "storageclasses.storage.k8sio \"(\\S+)\" is forbidden: User \"(\\S+)\" cannot patch resource \"(\\S+)\" in APl group \"(\\S+)\" at the cluster scope",
|
|
5
|
+
"replacement": "权限不足",
|
|
6
|
+
"flags": "gi"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"pattern": "virtualmachineimages.harvesterhciio \"(\\S+)\" is forbidden: User \"(\\S+)\" cannot patch resource \"(\\S+)\" in Apl group \"(\\S+)\" in the namespace \"(\\S+)\"",
|
|
10
|
+
"replacement": "权限不足",
|
|
11
|
+
"flags": "gi"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"pattern": "Method POST not supported",
|
|
15
|
+
"replacement": "权限不足",
|
|
16
|
+
"flags": "gi"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"pattern": "Method GET not supported",
|
|
20
|
+
"replacement": "权限不足",
|
|
21
|
+
"flags": "gi"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"pattern": "Method CREATE not supported",
|
|
25
|
+
"replacement": "权限不足",
|
|
26
|
+
"flags": "gi"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"pattern": "Method GET not supported",
|
|
30
|
+
"replacement": "权限不足",
|
|
31
|
+
"flags": "gi"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"pattern": "Method DELETE not supported",
|
|
35
|
+
"replacement": "权限不足",
|
|
36
|
+
"flags": "gi"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"pattern": "Method PUT not supported",
|
|
40
|
+
"replacement": "权限不足",
|
|
41
|
+
"flags": "gi"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"pattern": "failure while starting vmi: arm64 not support this disk bus type, please use virtio or scsi",
|
|
45
|
+
"replacement": "启动虚拟机实例失败:ARM64 架构不支持此磁盘总线类型,请使用 virtio 或 scsi",
|
|
46
|
+
"flags": "gi"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"pattern": "the server could not find the requested resource",
|
|
50
|
+
"replacement": "服务器无法找到请求的资源",
|
|
51
|
+
"flags": "gi"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"pattern": "failed to create vm backup, error: provisioner nfs.csi.k8s.io is not supported for type backup",
|
|
55
|
+
"replacement": "创建虚拟机备份失败, 错误:nfs存储不支持备份",
|
|
56
|
+
"flags": "gi"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"pattern": "maximum call stack size exceeded",
|
|
60
|
+
"replacement": "超出最大调用堆栈大小",
|
|
61
|
+
"flags": "gi"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"pattern": "([^\\s]+) in excludeips is not a valid ip range",
|
|
65
|
+
"replacement": "excludeIPs 中的地址段 '$1' 不是有效的 IP 范围",
|
|
66
|
+
"flags": "gi"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"pattern": "fail to create service, error: service "([^&]+)" is invalid: metadata\\.name: invalid value: "([^&]+)": a dns-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character",
|
|
70
|
+
"replacement": "创建服务失败:服务名称 \"$2\" 不符合 DNS-1035 规则,只能使用小写字母、数字或 '-',并以字母开头、字母或数字结尾",
|
|
71
|
+
"flags": "gi"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"pattern": "(\\S+) \"(\\S+)\" is forbidden: user \"(\\S+)\" cannot update resource \"(\\S+)\" in api group \"(\\S+)\" at the cluster scope",
|
|
75
|
+
"replacement": "$1 \"$2\" 被禁止:用户 \"$3\" 无权在集群范围内更新 API 组 \"$5\" 中的资源 \"$4\"",
|
|
76
|
+
"flags": "gi"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"pattern": "virtualmachine\\.kubevirt\\.io \"([^\"]+)\" is invalid:\\[metadata\\.labels: invalid value: \"([^\"]+)\": name part must consist of alphanumeric characters, '-', '_' or '\\.', and must start and end with an alphanumeric character\\]",
|
|
80
|
+
"replacement": "虚拟机 \"$1\" 标签值 \"$2\" 无效:只能包含字母、数字、'-','_'或'.',且以字母/数字开头和结尾",
|
|
81
|
+
"flags": "gi"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"pattern": "failed to list objects with param:[\\s\\S]*?invalidaccesskeyid[\\s\\S]*?the access key id you provided does not exist in our records(?:[\\s\\S]*?403 [a-f0-9]+)?",
|
|
85
|
+
"replacement": "列举对象失败:AccessKey ID 不存在,请检查密钥是否正确",
|
|
86
|
+
"flags": "gi"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"pattern": "failed to list objects with param:[\\s\\S]*?signaturedoesnotmatch[\\s\\S]*?check your key and signing method(?:[\\s\\S]*?403 [a-f0-9]+)?",
|
|
90
|
+
"replacement": "列举对象失败:签名不匹配,请确认 AccessKey、SecretKey 及签名方法配置正确",
|
|
91
|
+
"flags": "gi"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"pattern": "ip (\\S+) in excludeips is not a valid address",
|
|
95
|
+
"replacement": "排除 IP中的地址 '$1' 无效",
|
|
96
|
+
"flags": "gi"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"pattern": "name part必须 consist of alphanumeric characters, '-', '_'或'.',和must开始and end with an alphanumeric character",
|
|
100
|
+
"replacement": "只能包含字母、数字、'-','_'或'.',且以字母/数字开头和结尾",
|
|
101
|
+
"flags": "gi"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"pattern": "failure while starting vmi: ",
|
|
105
|
+
"replacement": "虚拟机启动失败:",
|
|
106
|
+
"flags": "gi"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"pattern": "virtualmachineinstance\\.kubevirt\\.io \"([^\"]+)\" is invalid:\\[metadata\\.labels: invalid value: \"([^\"]+)\": name part must consist of alphanumeric characters, '-', '_' or '\\.', and must start and end with an alphanumeric character",
|
|
110
|
+
"replacement": "'$1' 标签值 '$2' 无效,只能包含字母、数字、'-','_'或'.',且以字母/数字开头和结尾",
|
|
111
|
+
"flags": "gi"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"pattern": "failed calling webhook \"([^\"]+)\": failed to call webhook: post \"([^\"]+)\": no endpoints available for service \"([^\"]+)\"",
|
|
115
|
+
"replacement": "调用准入钩子 '$1' 失败:服务 '$3' 无可用端点,请检查对应服务状态",
|
|
116
|
+
"flags": "gi"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"pattern": "failed to list objects with param:[\\s\\S]*?unsupported protocol scheme \"([^\"]+)\"",
|
|
120
|
+
"replacement": "列举对象失败:不支持协议方案 \"$1\",请检查 URL 协议是否正确",
|
|
121
|
+
"flags": "gi"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"pattern": "subnet (\\S+) cidr (\\S+) is conflict with subnet (\\S+) cidr (\\S+)",
|
|
125
|
+
"replacement": "子网 '$1' CIDR $2 与子网 '$3' CIDR $4 冲突",
|
|
126
|
+
"flags": "gi"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"pattern": "virtualmachine\\.kubevirt\\.io \"([^\"]+)\" is invalid: metadata\\.annotations: invalid value: \"([^\"]+)\": name part must consist of alphanumeric characters, '-', '_' or '\\.', and must start and end with an alphanumeric character",
|
|
130
|
+
"replacement": "虚拟机 '$1' 注解值 '$2' 无效:只能包含字母、数字、'-','_'或'.',且以字母/数字开头和结尾",
|
|
131
|
+
"flags": "gi"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"pattern": "storage class must contain (csi\\.storage\\.k8s\\.io/(?:provisioner|node-stage|node-publish)-secret-(?:name|namespace)(?:,\\s*|$))+",
|
|
135
|
+
"replacement": "密钥不能为空",
|
|
136
|
+
"flags": "gi"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"pattern": "can't delete vlanconfig (\\S+) because it is blocked by vm\\(s\\) ([^,]+(?:,\\s*[^,\\s]+)*) which must be stopped at first",
|
|
140
|
+
"replacement": "无法删除 VLAN 配置 '$1':需先停止虚拟机 '$2'",
|
|
141
|
+
"flags": "gi"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"pattern": "spec\\.template\\.spec\\.podaffinity\\.requiredduringschedulingignoredduringexecution\\[(\\d+)\\]\\.topologykey: required value: can not be empty[\\s\\S]*?invalid value: \"\"[\\s\\S]*?must start and end with an alphanumeric character",
|
|
145
|
+
"replacement": "拓扑键不能为空",
|
|
146
|
+
"flags": "gi"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"pattern": "can't delete vlanconfig (\\S+) because it is blocked by vm\\(s\\) ([^,]+(?:,\\s*[^,\\s]+)*) which must be stopped at first",
|
|
150
|
+
"replacement": "无法删除 VLAN 配置 '$1':需先停止虚拟机 '$2'",
|
|
151
|
+
"flags": "gi"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"pattern": "spec\\.template\\.spec\\.podaffinity\\.requiredduringschedulingignoredduringexecution\\[(\\d+)\\]\\.topologykey: required value: can not be empty[\\s\\S]*?invalid value: \"\"[\\s\\S]*?must start and end with an alphanumeric character",
|
|
155
|
+
"replacement": "拓扑键不能为空",
|
|
156
|
+
"flags": "gi"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"pattern": "failed to list objects with param:[\\s\\S]*?authorizationheadermalformed[\\s\\S]*?the region is wrong; expecting '([^']+)'[\\s\\S]*",
|
|
160
|
+
"replacement": "参数错误,无法连接到服务器",
|
|
161
|
+
"flags": "gi"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"pattern": "has timed out progressing.",
|
|
165
|
+
"replacement": "状态更新超时。",
|
|
166
|
+
"flags": "gi"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"pattern": "The new password must not be the same as the current password",
|
|
170
|
+
"replacement": "新密码不能与当前密码相同,请重新设置",
|
|
171
|
+
"flags": "gi"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"pattern": "guest memory is greater than the configured maxguest memory",
|
|
175
|
+
"replacement": "内存已超过所配置的最大客户机内存",
|
|
176
|
+
"flags": "gi"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"pattern": "memory hotplug is only available for vms with at least (\\d+[a-z]*) of guest memory",
|
|
180
|
+
"replacement": "内存热插拔仅适用于客户机内存至少为 $1 的虚拟机",
|
|
181
|
+
"flags": "gi"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"pattern": "storage class must contain csi\\.storage\\.k8s\\.io/(provisioner-secret-name|provisioner-secret-namespace|node-stage-secret-name|node-stage-secret-namespace|node-publish-secret-name|node-publish-secret-namespace)(?:,\\s*)?(.*)",
|
|
185
|
+
"replacement": "存储池必须包含以下 CSI 密钥注解:$1$2",
|
|
186
|
+
"flags": "gi"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"pattern": "sourceimagename is required when image source type is \"clone\"",
|
|
190
|
+
"replacement": "镜像来源类型为“克隆”时,必须填写源镜像名称",
|
|
191
|
+
"flags": "gi"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"pattern": "([^\"\\s]+) exceeds the file size limit of (\\d+) bytes",
|
|
195
|
+
"replacement": "文件 '$1' 超过大小限制 $2 字节",
|
|
196
|
+
"flags": "gi"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"pattern": "failure while starting vmi: virtualmachineinstance\\.kubevirt\\.io \"([^\"]+)\" is invalid: metadata\\.labels: invalid value: \"([^\"]+)\": name part must consist of alphanumeric characters, '-', '_' or '\\.', and must start and end with an alphanumeric character",
|
|
200
|
+
"replacement": "启动虚拟机实例失败:'$1' 标签值 '$2' 无效,只能包含字母、数字、'-','_'或'.',且以字母/数字开头和结尾",
|
|
201
|
+
"flags": "gi"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"pattern": "virtualmachine\\.kubevirt\\.io \"([^\"]+)\" is invalid:[\\s\\S]*?metadata\\.labels: invalid value: \"([^\"]*)\"[\\s\\S]*?regex used for validation is '([^']+)'",
|
|
205
|
+
"replacement": "虚拟机 '$1' 标签值 '$2' 无效:只能包含字母、数字、'-','_' 或 '.',且以字母/数字开头结尾(正则:$3)",
|
|
206
|
+
"flags": "gi"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"pattern": "virtualmachine\\.kubevirt\\.io \"([^\"]+)\" is invalid:[\\s\\S]*?spec\\.template: Invalid value: corev1\\.PodTemplateSpec \\{[\\s\\S]*?spec: corev1\\.PodSpec \\{[\\s\\S]*?containers: \\[corev1\\.Container \\{[\\s\\S]*?image: \"([^\"]*)\",[\\s\\S]*?\\}\\],[\\s\\S]*?nodeSelector: map\\[([^:]+): ([^\\]]+)\\],[\\s\\S]*?\\},[\\s\\S]*?\\},[\\s\\S]*?\\},[\\s\\S]*?regex used for validation is '([^']+)'",
|
|
210
|
+
"replacement": "虚拟机 '$1' 的镜像 '$2' 无法在节点标签 '$3=$4' 的节点上运行(正则:$5)",
|
|
211
|
+
"flags": "gi"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"pattern": "role is locked and cannot be assigned",
|
|
215
|
+
"replacement": "角色已被锁定,不能再分配",
|
|
216
|
+
"flags": "gi"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"pattern": "invalid current password",
|
|
220
|
+
"replacement": "当前密码输入错误,请重新输入",
|
|
221
|
+
"flags": "gi"
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"pattern": "spec\\.template\\.spec\\.podaffinity\\.requiredduringschedulingignoredduringexecution\\[(\\d+)\\]\\.topologykey: required value: can not be empty[\\s\\S]*?regex used for validation is '([^']+)'",
|
|
225
|
+
"replacement": "拓扑键不能为空",
|
|
226
|
+
"flags": "gi"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"pattern": "pcidevice ([^\\s]+) has no iommugroup available",
|
|
230
|
+
"replacement": "PCI 设备 '$1' 没有可用的 IOMMU 组",
|
|
231
|
+
"flags": "gi"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"pattern": "invalidbodycontent 422: failed to parse totalsnapshotsizequota: quantities must match the regular expression '\\^\\(\\[\\+\\-\\]\\?\\[0-9\\.\\]\\+\\)\\(\\[eeinumkkmgtp\\]\\*\\[\\-\\+\\]\\?\\[0-9\\]\\*\\)\\$'",
|
|
235
|
+
"replacement": "快照配额不能为空",
|
|
236
|
+
"flags": "gi"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"pattern": "secrets \"([^\"]+)\" already exists",
|
|
240
|
+
"replacement": "密钥 \"$1\" 已存在",
|
|
241
|
+
"flags": "gi"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"pattern": "backup target is invalid",
|
|
245
|
+
"replacement": "备份目标无效",
|
|
246
|
+
"flags": "gi"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"pattern": "failed to list objects with param:[\\s\\S]*?server gave http response to https client",
|
|
250
|
+
"replacement": "列举对象失败:服务器返回 HTTP 响应,但客户端使用 HTTPS,请检查协议配置",
|
|
251
|
+
"flags": "gi"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"pattern": "clusternetwork\\.network\\.harvesterhci\\.io \"([^\"]+)\" is invalid: metadata\\.name: invalid value: \"([^\"]*)\": a lowercase rfc 1123 subdomain must consist of lower case alphanumeric characters, '-' or '\\.', and must start and end with an alphanumeric character",
|
|
255
|
+
"replacement": "集群网络名称 '$1' 无效:须符合 RFC 1123 子域名规则,只能使用小写字母、数字、'-' 或 '.',且以字母或数字开头和结尾",
|
|
256
|
+
"flags": "gi"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"pattern": "loadbalancer\\.loadbalancer\\.harvesterhci\\.io \"([^\"]+)\" is invalid: \\[spec\\.listeners\\[(\\d+)\\]\\.(backendport|port): required value[^\\]]*\\]",
|
|
260
|
+
"replacement": "负载均衡器 '$1' 配置无效:第 $2 个监听器的 $3 为必填项",
|
|
261
|
+
"flags": "gi"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"pattern": "can't delete cluster network (\\S+) because vlanconfig\\(s\\) \\[(.*?)\\] under this clusternetwork are still existing",
|
|
265
|
+
"replacement": "无法删除集群网络 '$1',因其下仍存在 VLAN 配置 [$2]",
|
|
266
|
+
"flags": "gi"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"pattern": "value: (\\d+) must be in range \\[1 \\.\\. (\\d+)\\]",
|
|
270
|
+
"replacement": "值 $1 超出范围,必须在 1–$2 之间",
|
|
271
|
+
"flags": "gi"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"pattern": "can't delete vlanconfig (\\S+) because it is blocked by vm\\(s\\) ([^/]+)/(\\S+) which must be stopped at first",
|
|
275
|
+
"replacement": "无法删除 VLAN 配置 '$1':需先停止虚拟机 '$2/$3'",
|
|
276
|
+
"flags": "gi"
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"pattern": "cannot find nfs path",
|
|
280
|
+
"replacement": "无法找到 NFS 路径",
|
|
281
|
+
"flags": "gi"
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"pattern": "get \"([^\"]+)\": unsupported protocol scheme \"\"",
|
|
285
|
+
"replacement": "url 无效",
|
|
286
|
+
"flags": "gi"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"pattern": "cannot mount nfs ([^\\s]+)[\\s\\S]*?no such file or directory[\\s\\S]*?cannot mount using nfsv4",
|
|
290
|
+
"replacement": "备份存储的端点无法访问",
|
|
291
|
+
"flags": "gi"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"pattern": "can't create nad ([^/]+)/([^\\s]+) because the gateway ([^\\s]+) is invalid",
|
|
295
|
+
"replacement": "无法创建虚拟网络 '$1/$2',因为网关 '$3' 无效",
|
|
296
|
+
"flags": "gi"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"pattern": "can't create nad ([^/]+)/([^\\s]+) because the cidr ([^\\s]+) is invalid",
|
|
300
|
+
"replacement": "无法创建虚拟网络 '$1/$2',因为 CIDR '$3' 无效",
|
|
301
|
+
"flags": "gi"
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"pattern": "no matching backup found for url ([^\\s]+) and backing image ([^\\s]+)",
|
|
305
|
+
"replacement": "未找到与 URL $1 和镜像 $2 匹配的备份",
|
|
306
|
+
"flags": "gi"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"pattern": "take virtual machine snapshot ([^\\s]+) successfully\\.",
|
|
310
|
+
"replacement": "虚拟机快照 '$1' 创建成功。",
|
|
311
|
+
"flags": "gi"
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"pattern": "delete virtual machine snapshot ([^\\s]+) successfully\\.",
|
|
315
|
+
"replacement": "虚拟机快照 '$1' 删除成功。",
|
|
316
|
+
"flags": "gi"
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"pattern": "restore virtual machine snapshot ([^\\s]+) successfully\\.",
|
|
320
|
+
"replacement": "虚拟机快照 '$1' 恢复成功。",
|
|
321
|
+
"flags": "gi"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"pattern": "update virtual machine snapshot ([^\\s]+) successfully\\.",
|
|
325
|
+
"replacement": "虚拟机快照 '$1' 更新成功。",
|
|
326
|
+
"flags": "gi"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"pattern": "failed to create subnet ([^\\s]+), conflict with existing subnet ([^\\s]+)",
|
|
330
|
+
"replacement": "创建子网 '$1' 失败,地址段与现有子网 '$2' 冲突",
|
|
331
|
+
"flags": "gi"
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"pattern": "subnet\\.kubeovn\\.io \"([^\"]*)\" is invalid: metadata\\.name: invalid value: \"([^\"]*)\": metadata\\.name in body should match '\\^\\[\\^0-9\\]'",
|
|
335
|
+
"replacement": "子网名称 '$1' 无效:名称不能以数字开头",
|
|
336
|
+
"flags": "gi"
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"pattern": "(\\S+) conflict with v4 loopback cidr (\\S+)",
|
|
340
|
+
"replacement": "地址段 $1 与 IPv4 回环地址段 $2 冲突",
|
|
341
|
+
"flags": "gi"
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"pattern": "can't delete subnet when any ips in using",
|
|
345
|
+
"replacement": "子网中仍有 IP 地址正在使用,无法删除",
|
|
346
|
+
"flags": "gi"
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"pattern": "subnet ([^\\s]+) is still using the nad ([^\\s]+) default",
|
|
350
|
+
"replacement": "子网 '$1' 正在使用虚拟网络 '$2',请先删除子网 '$1' ",
|
|
351
|
+
"flags": "gi"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"pattern": "can't delete vpc when any subnet in the vpc",
|
|
355
|
+
"replacement": "VPC 内仍存在子网,无法删除该 VPC",
|
|
356
|
+
"flags": "gi"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"pattern": "(\\S+) in allowsubnets is not a valid address",
|
|
360
|
+
"replacement": "允许互通子网地址 $1 无效",
|
|
361
|
+
"flags": "gi"
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"pattern": "gateway (\\S+) is not in cidr (\\S+)",
|
|
365
|
+
"replacement": "网关地址 $1 不在 CIDR $2 范围内",
|
|
366
|
+
"flags": "gi"
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
"pattern": "subnet ([^\\s]+) is using the provider ([^\\s]+) already",
|
|
370
|
+
"replacement": "子网 '$1' 已使用虚拟网络 '$2'",
|
|
371
|
+
"flags": "gi"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"pattern": "invalid next hop ip",
|
|
375
|
+
"replacement": "无效的下一跳地址",
|
|
376
|
+
"flags": "gi"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"pattern": "number of sockets in cpu topology is greater than the maximum sockets allowed, number of sockets in cpu topology is greater than the maximum sockets allowed",
|
|
380
|
+
"replacement": "CPU 拓扑中的 socket 数量已超过最大允许值",
|
|
381
|
+
"flags": "gi"
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
"pattern": "number of sockets in cpu topology is greater than the maximum sockets allowed",
|
|
385
|
+
"replacement": "CPU 拓扑中的 socket 数量已超过最大允许值",
|
|
386
|
+
"flags": "gi"
|
|
387
|
+
},
|
|
388
|
+
|
|
389
|
+
{
|
|
390
|
+
"pattern": "not a default subnet join as provider is ([^\\s]+)",
|
|
391
|
+
"replacement": "非默认子网,当前以提供者 $1 加入",
|
|
392
|
+
"flags": "gi"
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"pattern": "subnet ([^\\s]+) cidr ([^\\s]+) is invalid, due to invalid cidr address: ([^\\s]+)",
|
|
396
|
+
"replacement": "子网 '$1' 的 CIDR 地址 '$2' 无效:不是合法的 CIDR 格式",
|
|
397
|
+
"flags": "gi"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"pattern": "validation failed in api: vpc.kubeovn.io \"([^\"]*)\" is invalid: metadata\\.name: invalid value: \"([^\"]*)\": a lowercase rfc 1123 subdomain must consist of lower case alphanumeric characters, '-' or '\\.', and must start and end with an alphanumeric character \\(e\\.g\\..*?\\)",
|
|
401
|
+
"replacement": "校验失败:VPC 名称 \"$1\" 不符合 RFC 1123 子域名规则,只能使用小写字母、数字、'-' 或 '.',且必须以字母/数字开头和结尾",
|
|
402
|
+
"flags": "gi"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"pattern": "validation 失败 in api",
|
|
406
|
+
"replacement": "校验失败",
|
|
407
|
+
"flags": "gi"
|
|
408
|
+
},
|
|
3
409
|
{
|
|
4
410
|
"pattern": "can't connect to backup target[\\s\\S]*no route to host",
|
|
5
411
|
"replacement": "无法连接到备份目标:网络不可达,请检查备份服务器地址与路由",
|
|
@@ -817,11 +1223,11 @@
|
|
|
817
1223
|
},
|
|
818
1224
|
{
|
|
819
1225
|
"pattern": "virtualmachinebackup.harvesterhci.io",
|
|
820
|
-
"replacement": "
|
|
1226
|
+
"replacement": "虚拟机备份恢复"
|
|
821
1227
|
},
|
|
822
1228
|
{
|
|
823
1229
|
"pattern": "virtualmachinebackup.cloudhci.io",
|
|
824
|
-
"replacement": "
|
|
1230
|
+
"replacement": "虚拟机备份恢复"
|
|
825
1231
|
},
|
|
826
1232
|
{
|
|
827
1233
|
"pattern": "vlanconfigs.network.harvesterhci.io",
|
|
@@ -1328,6 +1734,14 @@
|
|
|
1328
1734
|
"pattern": ""备份" 是必填项。",
|
|
1329
1735
|
"replacement": "\"快照/备份\" 是必填项"
|
|
1330
1736
|
},
|
|
1737
|
+
{
|
|
1738
|
+
"pattern": "namespaces",
|
|
1739
|
+
"replacement": "资源组"
|
|
1740
|
+
},
|
|
1741
|
+
{
|
|
1742
|
+
"pattern": "replicaset",
|
|
1743
|
+
"replacement": "副本集"
|
|
1744
|
+
},
|
|
1331
1745
|
{
|
|
1332
1746
|
"pattern": "%",
|
|
1333
1747
|
"replacement": ""
|
package/vue.config.js
CHANGED
|
@@ -157,7 +157,7 @@ const getLoaders = (SHELL_ABS) => [
|
|
|
157
157
|
test: /\.m?[tj]sx?$/,
|
|
158
158
|
// This excludes no modules except for node_modules/@rancher/... so that plugins can properly compile
|
|
159
159
|
// when referencing @rancher/shell
|
|
160
|
-
exclude: /node_modules\/(?!(
|
|
160
|
+
exclude: /node_modules\/(?!(dashboard-shell-shell)\/).*/,
|
|
161
161
|
use: [
|
|
162
162
|
{
|
|
163
163
|
loader: 'cache-loader',
|