Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/linters/biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.8/schema.json",
"formatter": {
"indentStyle": "space",
"indentWidth": 2
},
"linter": {
"rules": {
"suspicious": {
"noDuplicateObjectKeys": "off"
Copy link

Copilot AI Dec 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The noDuplicateObjectKeys linter rule is disabled. This rule detects duplicate keys in JSON objects, which can lead to unexpected behavior since only the last value will be retained. Consider enabling this rule to catch potential issues in locale files where duplicate keys might be accidentally introduced.

Suggested change
"noDuplicateObjectKeys": "off"
"noDuplicateObjectKeys": "error"

Copilot uses AI. Check for mistakes.
}
}
}
}
9 changes: 9 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,15 @@ repos:
- id: doctoc
name: Add TOC for Markdown files
files: ^CONTRIBUTING\.md$|^INSTALL\.md$|^README\.md$
- repo: https://github.com/biomejs/pre-commit
rev: v0.6.1
hooks:
- id: biome-check
name: run biome-check
description: format, lint, and more in a fraction of a second
files: ^ui/public/locales/.*\.json$
args: [--config-path=.github/linters/biome.json]
additional_dependencies: ["@biomejs/biome@2.3.8"]
- repo: https://github.com/oxipng/oxipng
rev: v9.1.5
hooks:
Expand Down
2,958 changes: 1,479 additions & 1,479 deletions ui/public/locales/ar.json

Large diffs are not rendered by default.

2,958 changes: 1,479 additions & 1,479 deletions ui/public/locales/ca.json

Large diffs are not rendered by default.

4,394 changes: 2,197 additions & 2,197 deletions ui/public/locales/de_DE.json

Large diffs are not rendered by default.

5,438 changes: 2,719 additions & 2,719 deletions ui/public/locales/el_GR.json

Large diffs are not rendered by default.

8,258 changes: 4,129 additions & 4,129 deletions ui/public/locales/en.json

Large diffs are not rendered by default.

3,024 changes: 1,512 additions & 1,512 deletions ui/public/locales/es.json

Large diffs are not rendered by default.

2,962 changes: 1,481 additions & 1,481 deletions ui/public/locales/fr_FR.json

Large diffs are not rendered by default.

924 changes: 462 additions & 462 deletions ui/public/locales/hi.json

Large diffs are not rendered by default.

2,958 changes: 1,479 additions & 1,479 deletions ui/public/locales/hu.json

Large diffs are not rendered by default.

2,958 changes: 1,479 additions & 1,479 deletions ui/public/locales/it_IT.json

Large diffs are not rendered by default.

4,650 changes: 2,325 additions & 2,325 deletions ui/public/locales/ko_KR.json

Large diffs are not rendered by default.

2,958 changes: 1,479 additions & 1,479 deletions ui/public/locales/nb_NO.json

Large diffs are not rendered by default.

2,960 changes: 1,480 additions & 1,480 deletions ui/public/locales/nl_NL.json

Large diffs are not rendered by default.

2,960 changes: 1,480 additions & 1,480 deletions ui/public/locales/pl.json

Large diffs are not rendered by default.

5,158 changes: 2,579 additions & 2,579 deletions ui/public/locales/pt_BR.json

Large diffs are not rendered by default.

2,956 changes: 1,478 additions & 1,478 deletions ui/public/locales/ru_RU.json

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions ui/public/locales/zh_CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@

"label.action.image.store.read.only": "\u4F7F\u4E8C\u7EA7\u5B58\u50A8\u4E3A\u53EA\u8BFB",
"label.action.image.store.read.write": "\u4F7F\u4E8C\u7EA7\u5B58\u50A8\u53EF\u8BFB\u5199",
"label.action.import.export.instances":"\u5BFC\u5165\u5BFC\u51FA\u5B9E\u4F8B",
"label.action.import.export.instances": "\u5BFC\u5165\u5BFC\u51FA\u5B9E\u4F8B",
"label.action.iso.permission": "\u66F4\u65B0ISO\u6743\u9650",
"label.action.iso.share": "\u66F4\u65B0ISO\u5171\u4EAB",

Expand Down Expand Up @@ -378,7 +378,7 @@
"label.add.isolated.network": "\u6DFB\u52A0\u9694\u79BB\u7F51\u7EDC",

"label.add.kubernetes.cluster": "\u6DFB\u52A0 Kubernetes \u96C6\u7FA4",
"label.add.l2.guest.network": "\u6DFB\u52A0 L2 \u6765\u5BBE\u7F51\u7EDC",
"label.add.l2.guest.network": "\u6DFB\u52A0 L2 \u6765\u5BBE\u7F51\u7EDC",
"label.add.ldap.account": "\u6DFB\u52A0 LDAP \u8D26\u6237",
"label.add.ldap.list.users": "\u5217\u51FA LDAP \u7528\u6237",
"label.add.acl.name": "ACL \u5217\u8868\u540D\u79F0",
Expand Down Expand Up @@ -885,7 +885,7 @@
"label.demote.project.owner.user": "\u5C06\u7528\u6237\u964D\u7EA7\u4E3A\u5E38\u89C4\u89D2\u8272",

"label.deny": "\u62D2\u7EDD",
"label.deployasis":"\u4ECEOVA\u8BFB\u53D6\u865A\u62DF\u673A\u8BBE\u7F6E",
"label.deployasis": "\u4ECEOVA\u8BFB\u53D6\u865A\u62DF\u673A\u8BBE\u7F6E",
"label.deploymentplanner": "\u90E8\u7F72\u89C4\u5212\u5668",
"label.desc.db.stats": "\u6570\u636E\u5E93\u7EDF\u8BA1",
"label.desc.importexportinstancewizard": "\u5BFC\u5165/\u5BFC\u51FA \u5B9E\u4F8B \u5230/\u4ECE VMware \u96C6\u7FA4\u3002",
Expand Down Expand Up @@ -1487,7 +1487,7 @@
"label.lastname.lower": "\u59D3\u6C0F",
"label.lastserverstart": "\u4E0A\u6B21\u7BA1\u7406\u670D\u52A1\u5668\u542F\u52A8\u65F6\u95F4",
"label.lastserverstop": "\u4E0A\u6B21\u7BA1\u7406\u670D\u52A1\u5668\u505C\u6B62\u65F6\u95F4",
"label.latest.events": "\u6700\u65B0\u4E8B\u4EF6",
"label.latest.events": "\u6700\u65B0\u4E8B\u4EF6",

"label.launch": "\u542F\u52A8",
"label.launch.vm": "\u542F\u52A8\u865A\u62DF\u673A",
Expand Down Expand Up @@ -3077,7 +3077,7 @@
"message.apply.snapshot.policy": "\u60A8\u5DF2\u6210\u529F\u66F4\u65B0\u5F53\u524D\u7684\u5FEB\u7167\u7B56\u7565\u3002",
"message.apply.success": "\u7533\u8BF7\u6210\u529F",

"message.assign.instance.another": "\u8BF7\u6307\u5B9A\u65B0\u5E10\u6237\u7684\u5E10\u6237\u7C7B\u578B\u3001\u57DF\u3001\u5E10\u6237\u540D\u548C\u7F51\u7EDC\uFF08\u53EF\u9009\uFF09\u3002<br />\u5982\u679C\u865A\u62DF\u673A\u9ED8\u8BA4\u7F51\u5361\u4F4D\u4E8E\u5171\u4EAB\u7F51\u7EDC\u4E0A\uFF0C\u60A8\u672A\u6307\u5B9A\u7F51\u7EDC\uFF0CCloudStack\u5C06\u68C0\u67E5\u65B0\u8D26\u53F7\u662F\u5426\u53EF\u4EE5\u4F7F\u7528\u8BE5\u7F51\u7EDC\u3002<br />\u5982\u679C\u865A\u62DF\u673A\u9ED8\u8BA4\u7F51\u5361\u4F4D\u4E8E\u9694\u79BB\u7F51\u7EDC\u4E0A\uFF0C\u5E76\u4E14\u65B0\u5E10\u6237\u6709\u591A\u4E2A\u9694\u79BB\u7F51\u7EDC\uFF0C\u5219\u5E94\u6307\u5B9A\u4E00\u4E2A\u3002",
"message.assign.instance.another": "\u8BF7\u6307\u5B9A\u65B0\u5E10\u6237\u7684\u5E10\u6237\u7C7B\u578B\u3001\u57DF\u3001\u5E10\u6237\u540D\u548C\u7F51\u7EDC\uFF08\u53EF\u9009\uFF09\u3002<br />\u5982\u679C\u865A\u62DF\u673A\u9ED8\u8BA4\u7F51\u5361\u4F4D\u4E8E\u5171\u4EAB\u7F51\u7EDC\u4E0A\uFF0C\u60A8\u672A\u6307\u5B9A\u7F51\u7EDC\uFF0CCloudStack\u5C06\u68C0\u67E5\u65B0\u8D26\u53F7\u662F\u5426\u53EF\u4EE5\u4F7F\u7528\u8BE5\u7F51\u7EDC\u3002<br />\u5982\u679C\u865A\u62DF\u673A\u9ED8\u8BA4\u7F51\u5361\u4F4D\u4E8E\u9694\u79BB\u7F51\u7EDC\u4E0A\uFF0C\u5E76\u4E14\u65B0\u5E10\u6237\u6709\u591A\u4E2A\u9694\u79BB\u7F51\u7EDC\uFF0C\u5219\u5E94\u6307\u5B9A\u4E00\u4E2A\u3002",
"message.assign.vm.failed": "\u65E0\u6CD5\u5206\u914D\u865A\u62DF\u673A",
"message.assign.vm.processing": "\u5206\u914D\u865A\u62DF\u673A...",
"message.attach.iso.confirm": "\u8BF7\u786E\u8BA4\u60A8\u786E\u5B9E\u8981\u5C06\u6B64 ISO \u9644\u52A0\u5230\u6B64\u865A\u62DF\u5B9E\u4F8B\u3002",
Expand Down Expand Up @@ -3413,9 +3413,9 @@
"message.error.s3nfs.server": "\u8BF7\u8F93\u5165 S3 NFS \u670D\u52A1\u5668",
"message.error.save.setting": "\u4FDD\u5B58\u6B64\u8BBE\u7F6E\u65F6\u51FA\u9519\u3002",

"message.error.swift.account": "\u8BF7\u8F93\u5165\u8D26\u53F7",
"message.error.swift.account": "\u8BF7\u8F93\u5165\u8D26\u53F7",
"message.error.swift.key": "\u8BF7\u8F93\u5165\u5BC6\u7801",
"message.error.swift.username": "\u8BF7\u8F93\u5165\u7528\u6237\u540D",
"message.error.swift.username": "\u8BF7\u8F93\u5165\u7528\u6237\u540D",
"message.error.sbdomain": "\u8BF7\u8F93\u5165 SMB \u57DF",
"message.error.sbdomain.password": "\u8BF7\u8F93\u5165 SMB \u57DF\u5BC6\u7801",
"message.error.sbdomain.username": "\u8BF7\u8F93\u5165 SMB \u57DF\u7528\u6237\u540D",
Expand Down
Loading