@liujitcn/kratos-admin-system 0.0.49 → 0.0.51
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/README.md +44 -8
- package/dist/package/declarations/src/api/system/admin/v1/base_i18n_custom.d.ts +18 -0
- package/dist/package/declarations/src/api/system/admin/v1/base_redact_output_policy.d.ts +4 -1
- package/dist/package/declarations/src/api/system/admin/v1/base_redact_storage_policy.d.ts +3 -1
- package/dist/package/declarations/src/api/system/admin/v1/base_tenant.d.ts +2 -2
- package/dist/package/declarations/src/api/system/admin/v1/base_tenant_project.d.ts +23 -0
- package/dist/package/declarations/src/api/system/admin/v1/base_tenant_project_grant.d.ts +16 -0
- package/dist/package/declarations/src/components/tenant-project/TenantProjectManager.vue.d.ts +29 -0
- package/dist/package/declarations/src/components/tenant-project/TenantProjectSelect.vue.d.ts +31 -0
- package/dist/package/declarations/src/components/tenant-project/TenantProjectText.vue.d.ts +19 -0
- package/dist/package/declarations/src/components/tenant-project/tenant-project-manager-data.d.ts +14 -0
- package/dist/package/declarations/src/components/tenant-project/tenant-project-manager.d.ts +40 -0
- package/dist/package/declarations/src/components/tenant-project-grant/ProjectGrantDialog.vue.d.ts +8 -0
- package/dist/package/declarations/src/index.d.ts +2 -0
- package/dist/package/declarations/src/locales/generated.d.ts +196 -0
- package/dist/package/declarations/src/rpc/base/v1/config.d.ts +11 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_i18n_custom.d.ts +105 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_output_policy.d.ts +8 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_storage_policy.d.ts +25 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_tenant.d.ts +10 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/base_tenant_project.d.ts +141 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_tenant_project_grant.d.ts +105 -0
- package/dist/package/declarations/src/views/ai/chat/components/SessionPanel.vue.d.ts +2 -2
- package/dist/package/declarations/src/views/ai/chat/components/speech-recognition.d.ts +33 -0
- package/dist/package/declarations/src/views/base/i18n-custom/index.vue.d.ts +3 -0
- package/dist/package/declarations/src/views/base/tenant-project/index.vue.d.ts +3 -0
- package/dist/package/declarations/src/views/base/tenant-project-grant/index.vue.d.ts +3 -0
- package/dist/package/src/api/system/admin/v1/base_i18n_custom.ts +72 -0
- package/dist/package/src/api/system/admin/v1/base_redact_output_policy.ts +7 -0
- package/dist/package/src/api/system/admin/v1/base_redact_storage_policy.ts +7 -0
- package/dist/package/src/api/system/admin/v1/base_tenant.ts +3 -2
- package/dist/package/src/api/system/admin/v1/base_tenant_project.ts +94 -0
- package/dist/package/src/api/system/admin/v1/base_tenant_project_grant.ts +63 -0
- package/dist/package/src/components/tenant-project/TenantProjectManager.vue +431 -0
- package/dist/package/src/components/tenant-project/TenantProjectSelect.vue +83 -0
- package/dist/package/src/components/tenant-project/TenantProjectText.vue +37 -0
- package/dist/package/src/components/tenant-project/tenant-project-manager-data.ts +26 -0
- package/dist/package/src/components/tenant-project/tenant-project-manager.ts +48 -0
- package/dist/package/src/components/tenant-project-grant/ProjectGrantDialog.vue +108 -0
- package/dist/package/src/index.ts +12 -0
- package/dist/package/src/locales/README.md +1 -1
- package/dist/package/src/locales/en-US.json +51 -2
- package/dist/package/src/locales/ja-JP.json +51 -2
- package/dist/package/src/locales/zh-CN.json +51 -2
- package/dist/package/src/locales/zh-TW.json +51 -2
- package/dist/package/src/module.ts +3 -3
- package/dist/package/src/rpc/base/v1/config.ts +12 -0
- package/dist/package/src/rpc/system/admin/v1/base_i18n_custom.ts +126 -0
- package/dist/package/src/rpc/system/admin/v1/base_redact_output_policy.ts +9 -0
- package/dist/package/src/rpc/system/admin/v1/base_redact_storage_policy.ts +30 -0
- package/dist/package/src/rpc/system/admin/v1/base_tenant.ts +11 -1
- package/dist/package/src/rpc/system/admin/v1/base_tenant_project.ts +166 -0
- package/dist/package/src/rpc/system/admin/v1/base_tenant_project_grant.ts +128 -0
- package/dist/package/src/views/ai/chat/components/XSender.vue +21 -28
- package/dist/package/src/views/ai/chat/components/speech-recognition.ts +156 -0
- package/dist/package/src/views/base/api-log/index.vue +3 -3
- package/dist/package/src/views/base/config/index.vue +3 -3
- package/dist/package/src/views/base/data-access-log/index.vue +3 -3
- package/dist/package/src/views/base/dept/index.vue +10 -45
- package/dist/package/src/views/base/dict/index.vue +3 -3
- package/dist/package/src/views/base/dict/item.vue +3 -3
- package/dist/package/src/views/base/file/index.vue +12 -3
- package/dist/package/src/views/base/i18n-custom/index.vue +321 -0
- package/dist/package/src/views/base/job/index.vue +85 -161
- package/dist/package/src/views/base/login-log/index.vue +13 -4
- package/dist/package/src/views/base/login-policy/index.vue +109 -40
- package/dist/package/src/views/base/menu/index.vue +3 -3
- package/dist/package/src/views/base/message/index.vue +9 -32
- package/dist/package/src/views/base/message-category/index.vue +2 -4
- package/dist/package/src/views/base/oauth-client/index.vue +8 -42
- package/dist/package/src/views/base/online-session/index.vue +8 -27
- package/dist/package/src/views/base/operation-log/index.vue +3 -3
- package/dist/package/src/views/base/permission-log/index.vue +3 -3
- package/dist/package/src/views/base/policy-evaluation-log/index.vue +3 -3
- package/dist/package/src/views/base/post/index.vue +9 -42
- package/dist/package/src/views/base/redact-output-policy/index.vue +19 -7
- package/dist/package/src/views/base/redact-rule/index.vue +70 -53
- package/dist/package/src/views/base/redact-storage-policy/index.vue +18 -7
- package/dist/package/src/views/base/role/index.vue +14 -48
- package/dist/package/src/views/base/tenant/index.vue +163 -19
- package/dist/package/src/views/base/tenant-project/index.vue +12 -0
- package/dist/package/src/views/base/tenant-project-grant/index.vue +338 -0
- package/dist/package/src/views/base/user/index.vue +30 -51
- package/dist/package/src/views/profile/components/login-log.vue +15 -2
- package/dist/package/src/views/profile/components/password.vue +1 -1
- package/dist/package/src/views/profile/components/security.vue +2 -2
- package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +2 -2
- package/dist/package/src/views/tool/code-gen/config.ts +2 -1
- package/package.json +2 -2
- /package/dist/package/declarations/src/components/{ChangePasswordForm.vue.d.ts → account/ChangePasswordForm.vue.d.ts} +0 -0
- /package/dist/package/declarations/src/components/{ForcedPasswordDialog.vue.d.ts → account/ForcedPasswordDialog.vue.d.ts} +0 -0
- /package/dist/package/declarations/src/components/{Ai.vue.d.ts → ai/Ai.vue.d.ts} +0 -0
- /package/dist/package/declarations/src/components/{DynamicI18nCell.vue.d.ts → i18n/DynamicI18nCell.vue.d.ts} +0 -0
- /package/dist/package/declarations/src/components/{DynamicI18nEditor.vue.d.ts → i18n/DynamicI18nEditor.vue.d.ts} +0 -0
- /package/dist/package/declarations/src/components/{dynamicI18n.d.ts → i18n/dynamicI18n.d.ts} +0 -0
- /package/dist/package/declarations/src/components/{LogTable.vue.d.ts → log/LogTable.vue.d.ts} +0 -0
- /package/dist/package/declarations/src/components/{log.d.ts → log/log.d.ts} +0 -0
- /package/dist/package/declarations/src/components/{Notification.vue.d.ts → notification/Notification.vue.d.ts} +0 -0
- /package/dist/package/src/components/{ChangePasswordForm.vue → account/ChangePasswordForm.vue} +0 -0
- /package/dist/package/src/components/{ForcedPasswordDialog.vue → account/ForcedPasswordDialog.vue} +0 -0
- /package/dist/package/src/components/{Ai.vue → ai/Ai.vue} +0 -0
- /package/dist/package/src/components/{DynamicI18nCell.vue → i18n/DynamicI18nCell.vue} +0 -0
- /package/dist/package/src/components/{DynamicI18nEditor.vue → i18n/DynamicI18nEditor.vue} +0 -0
- /package/dist/package/src/components/{dynamicI18n.ts → i18n/dynamicI18n.ts} +0 -0
- /package/dist/package/src/components/{LogTable.vue → log/LogTable.vue} +0 -0
- /package/dist/package/src/components/{log.ts → log/log.ts} +0 -0
- /package/dist/package/src/components/{Notification.vue → notification/Notification.vue} +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FormDialog
|
|
3
|
+
v-model="visible"
|
|
4
|
+
:title="t('system.base.tenant_project.grant')"
|
|
5
|
+
:model="form"
|
|
6
|
+
:fields="fields"
|
|
7
|
+
:rules="rules"
|
|
8
|
+
width="640px"
|
|
9
|
+
@confirm="save"
|
|
10
|
+
@close="reset"
|
|
11
|
+
/>
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script setup lang="ts">
|
|
15
|
+
import { computed, reactive, ref, watch } from "vue";
|
|
16
|
+
import FormDialog from "@liujitcn/kratos-admin-core/components/Dialog/FormDialog.vue";
|
|
17
|
+
import type { ProFormField } from "@liujitcn/kratos-admin-core/components/ProForm/interface";
|
|
18
|
+
import { t } from "@liujitcn/kratos-admin-core";
|
|
19
|
+
import { useTenantScope } from "@liujitcn/kratos-admin-core/tenant";
|
|
20
|
+
import { defBaseTenantProjectService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_tenant_project";
|
|
21
|
+
import { defBaseTenantProjectGrantService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_tenant_project_grant";
|
|
22
|
+
import type {
|
|
23
|
+
BaseTenantProjectGrant,
|
|
24
|
+
BaseTenantProjectGrantSubjectType
|
|
25
|
+
} from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_tenant_project_grant";
|
|
26
|
+
import type { SelectOptionResponse_Option } from "@liujitcn/kratos-admin-system/rpc/common/v1/common";
|
|
27
|
+
|
|
28
|
+
const visible = ref(false);
|
|
29
|
+
const loading = ref(false);
|
|
30
|
+
const projectOptions = ref<SelectOptionResponse_Option[]>([]);
|
|
31
|
+
const form = reactive({ tenant_id: 0, all: false, project_id: [] as number[] });
|
|
32
|
+
const { tenantFormField, loadTenantOptions } = useTenantScope();
|
|
33
|
+
let subjectType: BaseTenantProjectGrantSubjectType;
|
|
34
|
+
let subjectId = 0;
|
|
35
|
+
let revision = 0;
|
|
36
|
+
const rules = computed(() => ({ tenant_id: [{ required: true, type: "number", min: 1, message: t("common.validation.required_select", { field: t("common.field.tenant") }), trigger: "change" }] }));
|
|
37
|
+
const fields = computed<ProFormField[]>(() => [
|
|
38
|
+
tenantFormField({ label: t("common.field.tenant") }),
|
|
39
|
+
{ prop: "all", label: t("system.base.tenant_project.all"), component: "switch", props: { disabled: loading.value } },
|
|
40
|
+
{ prop: "project_id", label: t("system.base.tenant_project.projects"), component: "select", options: projectOptions.value, visible: () => !form.all, props: { multiple: true, filterable: true, disabled: loading.value } }
|
|
41
|
+
]);
|
|
42
|
+
|
|
43
|
+
/** 打开指定主体的授权表单,目标租户切换后重新加载直接授权。 */
|
|
44
|
+
async function open(type: BaseTenantProjectGrantSubjectType, id: number, tenantId: number) {
|
|
45
|
+
reset();
|
|
46
|
+
subjectType = type;
|
|
47
|
+
subjectId = id;
|
|
48
|
+
await loadTenantOptions(true);
|
|
49
|
+
form.tenant_id = tenantId;
|
|
50
|
+
visible.value = true;
|
|
51
|
+
await load();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** 加载目标租户项目和当前主体的直接授权,避免快速切换时旧响应覆盖新结果。 */
|
|
55
|
+
async function load() {
|
|
56
|
+
const current = ++revision;
|
|
57
|
+
form.all = false;
|
|
58
|
+
form.project_id = [];
|
|
59
|
+
projectOptions.value = [];
|
|
60
|
+
if (!visible.value || form.tenant_id <= 0) return;
|
|
61
|
+
loading.value = true;
|
|
62
|
+
try {
|
|
63
|
+
const request = { tenant_id: form.tenant_id, subject_type: subjectType, subject_id: subjectId };
|
|
64
|
+
const [options, grant] = await Promise.all([
|
|
65
|
+
defBaseTenantProjectService.OptionBaseTenantProject({ tenant_id: request.tenant_id }),
|
|
66
|
+
defBaseTenantProjectGrantService.GetBaseTenantProjectGrant(request)
|
|
67
|
+
]);
|
|
68
|
+
if (current !== revision) return;
|
|
69
|
+
projectOptions.value = options.list ?? [];
|
|
70
|
+
form.all = grant.project_id.length === 1 && grant.project_id[0] === 0;
|
|
71
|
+
form.project_id = form.all ? [] : grant.project_id;
|
|
72
|
+
} finally {
|
|
73
|
+
if (current === revision) loading.value = false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** 保存当前来源的授权,其他三个来源保持独立。 */
|
|
78
|
+
async function save() {
|
|
79
|
+
if (loading.value) return;
|
|
80
|
+
const grant: BaseTenantProjectGrant = {
|
|
81
|
+
tenant_id: form.tenant_id,
|
|
82
|
+
subject_type: subjectType,
|
|
83
|
+
subject_id: subjectId,
|
|
84
|
+
project_id: form.all ? [0] : form.project_id,
|
|
85
|
+
tenant_name: "",
|
|
86
|
+
subject_name: "",
|
|
87
|
+
subject_code: "",
|
|
88
|
+
project_names: [],
|
|
89
|
+
grant_key: ""
|
|
90
|
+
};
|
|
91
|
+
await defBaseTenantProjectGrantService.UpdateBaseTenantProjectGrant({ base_tenant_project_grant: grant });
|
|
92
|
+
visible.value = false;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** 关闭后清空主体及项目,阻止未完成请求覆盖下次表单。 */
|
|
96
|
+
function reset() {
|
|
97
|
+
++revision;
|
|
98
|
+
visible.value = false;
|
|
99
|
+
subjectId = 0;
|
|
100
|
+
form.tenant_id = 0;
|
|
101
|
+
form.all = false;
|
|
102
|
+
form.project_id = [];
|
|
103
|
+
loading.value = false;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
watch(() => form.tenant_id, () => { if (visible.value) void load(); });
|
|
107
|
+
defineExpose({ open });
|
|
108
|
+
</script>
|
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
export { ADMIN_AI_EXTENSION, getAdminAiExtension } from "./ai";
|
|
2
2
|
export type { AdminAiExtension } from "./ai";
|
|
3
|
+
export { default as TenantProjectManager } from "./components/tenant-project/TenantProjectManager.vue";
|
|
4
|
+
export {
|
|
5
|
+
mergeTenantProjectExtraData,
|
|
6
|
+
tenantProjectKey,
|
|
7
|
+
type TenantProjectAction,
|
|
8
|
+
type TenantProjectContext,
|
|
9
|
+
type TenantProjectExtraData,
|
|
10
|
+
type TenantProjectExtraDataLoadContext,
|
|
11
|
+
type TenantProjectExtraDataLoader,
|
|
12
|
+
type TenantProjectKey,
|
|
13
|
+
type TenantProjectManagerProps
|
|
14
|
+
} from "./components/tenant-project/tenant-project-manager";
|
|
3
15
|
export { systemAdminModule } from "./module";
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
| `system.base.oauth_client.*` | 开放授权客户端字段、凭据和 API 选择。 | `src/views/base/oauth-client/**`。 |
|
|
21
21
|
| `system.code.gen.*` | 代码生成配置、预览、列配置和多语言编辑。 | `src/views/tool/code-gen/**`。 |
|
|
22
22
|
| `system.cache.*` | 运行时缓存查询、分页结果和条目详情。 | `src/views/tool/cache/**`。 |
|
|
23
|
-
| `system.i18n.*` | 动态翻译编辑、草稿生成和语言包状态。 | `src/components/DynamicI18nEditor.vue`、代码生成语言编辑组件。 |
|
|
23
|
+
| `system.i18n.*` | 动态翻译编辑、草稿生成和语言包状态。 | `src/components/i18n/DynamicI18nEditor.vue`、代码生成语言编辑组件。 |
|
|
24
24
|
|
|
25
25
|
语言包由生成的 `generated.ts` 传入 `systemAdminModule.messages`,由 core 的 `registerLocaleMessages` 校验语言键集合、命名空间和占位符后注册到 Vue I18n;业务代码统一使用 `t('system....')` 或 `useLocaleStore()` 读取。
|
|
26
26
|
|
|
@@ -494,6 +494,7 @@
|
|
|
494
494
|
"system.base.login_policy.field.device_blacklist": "Device blacklist",
|
|
495
495
|
"system.base.login_policy.field.device_whitelist": "Device whitelist",
|
|
496
496
|
"system.base.login_policy.field.initial_password": "Initial password",
|
|
497
|
+
"system.base.login_policy.field.password_strength": "Password strength",
|
|
497
498
|
"system.base.login_policy.field.ip_blacklist": "IP blacklist",
|
|
498
499
|
"system.base.login_policy.field.ip_whitelist": "IP whitelist",
|
|
499
500
|
"system.base.login_policy.field.lock_duration_minutes": "Lock duration (minutes)",
|
|
@@ -806,6 +807,7 @@
|
|
|
806
807
|
"system.base.redact_rule.description.fixed_length_mask": "Replace content with a fixed character while preserving its length",
|
|
807
808
|
"system.base.redact_rule.description.hash_digest": "Generate an irreversible result with a digest algorithm",
|
|
808
809
|
"system.base.redact_rule.description.ip_mask": "Keep the IP prefix octets and mask the rest",
|
|
810
|
+
"system.base.redact_rule.description.string_mask": "Keep configured leading and trailing characters and mask the middle",
|
|
809
811
|
"system.base.redact_rule.description.phone_mask": "Keep the first three and last four digits of a phone number",
|
|
810
812
|
"system.base.redact_rule.description.regex_replace": "Replace matching content with a regular expression",
|
|
811
813
|
"system.base.redact_rule.description.stable_uuid": "Convert text to a stable UUID",
|
|
@@ -820,6 +822,7 @@
|
|
|
820
822
|
"system.base.redact_rule.parameter.char": "Replacement character",
|
|
821
823
|
"system.base.redact_rule.parameter.keep_first": "Leading characters to keep",
|
|
822
824
|
"system.base.redact_rule.parameter.keep_last": "Trailing characters to keep",
|
|
825
|
+
"system.base.redact_rule.parameter.min_mask": "Minimum masked characters",
|
|
823
826
|
"system.base.redact_rule.parameter.keep_local_first": "Local-part characters to keep",
|
|
824
827
|
"system.base.redact_rule.parameter.keep_octets": "IP octets to keep",
|
|
825
828
|
"system.base.redact_rule.parameter.length": "Kept length",
|
|
@@ -833,6 +836,7 @@
|
|
|
833
836
|
"system.base.redact_rule.template.fixed_length_mask": "Fixed-length mask",
|
|
834
837
|
"system.base.redact_rule.template.hash_digest": "Hash digest",
|
|
835
838
|
"system.base.redact_rule.template.ip_mask": "IP address mask",
|
|
839
|
+
"system.base.redact_rule.template.string_mask": "Generic string mask",
|
|
836
840
|
"system.base.redact_rule.template.phone_mask": "Phone number mask",
|
|
837
841
|
"system.base.redact_rule.template.regex_replace": "Regular expression replacement",
|
|
838
842
|
"system.base.redact_rule.template.stable_uuid": "Stable UUID",
|
|
@@ -840,6 +844,9 @@
|
|
|
840
844
|
"system.base.redact_rule.template.url_mask": "URL parameter mask",
|
|
841
845
|
"system.base.redact_rule.title": "Redaction rules",
|
|
842
846
|
"system.base.redact_rule.validation.parameters": "Enter the rule parameters",
|
|
847
|
+
"system.base.redact_rule.validation.code": "Enter the rule code",
|
|
848
|
+
"system.base.redact_rule.validation.name": "Enter the rule name",
|
|
849
|
+
"system.base.redact_rule.validation.rule_type": "Select the rule type",
|
|
843
850
|
"system.base.redact_storage_policy.field.column_name": "Field",
|
|
844
851
|
"system.base.redact_storage_policy.field.parameters": "Rule parameters",
|
|
845
852
|
"system.base.redact_storage_policy.field.rule": "Redaction rule",
|
|
@@ -892,8 +899,14 @@
|
|
|
892
899
|
"system.base.tenant.field.contact_phone": "Contact phone",
|
|
893
900
|
"system.base.tenant.field.name": "Tenant name",
|
|
894
901
|
"system.base.tenant.message.phone_invalid": "Enter a valid contact phone number",
|
|
902
|
+
"system.base.tenant.message.initial_credentials": "Tenant created. Admin username: {userName}\nInitial password: {password}\nSave it securely; it cannot be viewed again after closing this dialog.",
|
|
903
|
+
"system.base.tenant.message.initial_credentials_warning": "Save these credentials securely; they cannot be viewed again after closing this dialog.",
|
|
895
904
|
"system.base.tenant.message.protected_delete": "The default tenant cannot be deleted",
|
|
896
905
|
"system.base.tenant.message.protected_status": "The default tenant status cannot be changed",
|
|
906
|
+
"system.base.tenant.title.initial_credentials": "Tenant administrator initial credentials",
|
|
907
|
+
"system.base.tenant.tooltip.copy_credentials": "Copy the tenant code, username, and password",
|
|
908
|
+
"system.base.tenant.tooltip.hide_password": "Hide password",
|
|
909
|
+
"system.base.tenant.tooltip.show_password": "Show password",
|
|
897
910
|
"system.base.user.action.create": "Create user",
|
|
898
911
|
"system.base.user.action.edit": "Edit user",
|
|
899
912
|
"system.base.user.action.reset_password": "Reset password",
|
|
@@ -1387,7 +1400,7 @@
|
|
|
1387
1400
|
"system.profile.login_log.field.client_ip": "Client IP",
|
|
1388
1401
|
"system.profile.login_log.field.device_id": "Device ID",
|
|
1389
1402
|
"system.profile.login_log.field.login_type": "Event type",
|
|
1390
|
-
"system.profile.login_log.field.occurred_at": "
|
|
1403
|
+
"system.profile.login_log.field.occurred_at": "Login time",
|
|
1391
1404
|
"system.profile.login_log.field.reason": "Description",
|
|
1392
1405
|
"system.profile.login_log.field.result": "Result",
|
|
1393
1406
|
"system.profile.login_log.nav_description": "View account login and logout records",
|
|
@@ -1519,5 +1532,41 @@
|
|
|
1519
1532
|
"system.runtime.log.value.live_console": "Live console",
|
|
1520
1533
|
"system.sse.error.auth_expired": "SSE authentication has expired",
|
|
1521
1534
|
"system.sse.error.connection_closed": "SSE connection closed",
|
|
1522
|
-
"system.sse.error.connection_failed": "SSE connection failed: {status}"
|
|
1535
|
+
"system.sse.error.connection_failed": "SSE connection failed: {status}",
|
|
1536
|
+
"system.base.tenant_project.field.name": "Project name",
|
|
1537
|
+
"system.base.tenant_project.field.code": "Project number",
|
|
1538
|
+
"system.base.tenant_project.grant": "Project access",
|
|
1539
|
+
"system.base.tenant_project.all": "All projects",
|
|
1540
|
+
"system.base.tenant_project.projects": "Selected projects",
|
|
1541
|
+
"system.base.tenant_project_grant.title": "Project authorization",
|
|
1542
|
+
"system.base.tenant_project_grant.field.subject_type": "Subject type",
|
|
1543
|
+
"system.base.tenant_project_grant.field.subject": "Subject",
|
|
1544
|
+
"system.base.tenant_project_grant.field.scope": "Authorization scope",
|
|
1545
|
+
"system.base.tenant_project_grant.tooltip.scope": "On: grant this subject access to all projects in the tenant. Off: grant access only to the projects selected below.",
|
|
1546
|
+
"system.base.tenant_project_grant.field.projects": "Projects",
|
|
1547
|
+
"system.base.tenant_project_grant.all_projects": "All projects",
|
|
1548
|
+
"system.base.tenant_project_grant.subject_type.post": "Post",
|
|
1549
|
+
"system.base.tenant_project_grant.subject_type.role": "Role",
|
|
1550
|
+
"system.base.tenant_project_grant.subject_type.dept": "Department",
|
|
1551
|
+
"system.base.tenant_project_grant.subject_type.user": "User",
|
|
1552
|
+
"system.base.i18n_custom.resource": "custom translation",
|
|
1553
|
+
"system.base.i18n_custom.action.create": "Add custom translation",
|
|
1554
|
+
"system.base.i18n_custom.action.edit": "Edit custom translation",
|
|
1555
|
+
"system.base.i18n_custom.field.site": "Site",
|
|
1556
|
+
"system.base.i18n_custom.field.key": "Locale key",
|
|
1557
|
+
"system.base.i18n_custom.field.locale": "Locale",
|
|
1558
|
+
"system.base.i18n_custom.field.default_value": "Default text",
|
|
1559
|
+
"system.base.i18n_custom.field.value": "Custom text",
|
|
1560
|
+
"system.base.i18n_custom.field.status": "Status",
|
|
1561
|
+
"system.base.i18n_custom.field.remark": "Remark",
|
|
1562
|
+
"system.base.i18n_custom.site.system": "System",
|
|
1563
|
+
"system.base.i18n_custom.site.admin": "Admin",
|
|
1564
|
+
"system.base.i18n_custom.site.app": "App",
|
|
1565
|
+
"system.base.i18n_custom.placeholder.site": "Select a site",
|
|
1566
|
+
"system.base.i18n_custom.placeholder.key": "Enter a locale key, such as common.field.project",
|
|
1567
|
+
"system.base.i18n_custom.placeholder.locale": "Select a locale",
|
|
1568
|
+
"system.base.i18n_custom.placeholder.value": "Enter custom text",
|
|
1569
|
+
"system.base.i18n_custom.placeholder.remark": "Enter a remark",
|
|
1570
|
+
"system.base.i18n_custom.message.confirm_status": "Are you sure you want to {action} \"{name}\"?",
|
|
1571
|
+
"system.base.i18n_custom.message.confirm_delete": "Are you sure you want to delete custom translation \"{name}\"?"
|
|
1523
1572
|
}
|
|
@@ -494,6 +494,7 @@
|
|
|
494
494
|
"system.base.login_policy.field.device_blacklist": "端末ブラックリスト",
|
|
495
495
|
"system.base.login_policy.field.device_whitelist": "端末ホワイトリスト",
|
|
496
496
|
"system.base.login_policy.field.initial_password": "初期パスワード",
|
|
497
|
+
"system.base.login_policy.field.password_strength": "強度のヒント",
|
|
497
498
|
"system.base.login_policy.field.ip_blacklist": "IP ブラックリスト",
|
|
498
499
|
"system.base.login_policy.field.ip_whitelist": "IP ホワイトリスト",
|
|
499
500
|
"system.base.login_policy.field.lock_duration_minutes": "ロック時間(分)",
|
|
@@ -806,6 +807,7 @@
|
|
|
806
807
|
"system.base.redact_rule.description.fixed_length_mask": "固定文字で置換し、元の長さを保持します",
|
|
807
808
|
"system.base.redact_rule.description.hash_digest": "ダイジェストアルゴリズムで不可逆な結果を生成します",
|
|
808
809
|
"system.base.redact_rule.description.ip_mask": "IP の先頭オクテットを保持し、残りをマスクします",
|
|
810
|
+
"system.base.redact_rule.description.string_mask": "設定した先頭と末尾の文字を保持し、中間をマスクします",
|
|
809
811
|
"system.base.redact_rule.description.phone_mask": "電話番号の先頭 3 桁と末尾 4 桁を保持します",
|
|
810
812
|
"system.base.redact_rule.description.regex_replace": "正規表現で一致した内容を置換します",
|
|
811
813
|
"system.base.redact_rule.description.stable_uuid": "テキストを安定 UUID に変換します",
|
|
@@ -820,6 +822,7 @@
|
|
|
820
822
|
"system.base.redact_rule.parameter.char": "置換文字",
|
|
821
823
|
"system.base.redact_rule.parameter.keep_first": "先頭から保持する文字数",
|
|
822
824
|
"system.base.redact_rule.parameter.keep_last": "末尾から保持する文字数",
|
|
825
|
+
"system.base.redact_rule.parameter.min_mask": "最小マスク文字数",
|
|
823
826
|
"system.base.redact_rule.parameter.keep_local_first": "ローカル部で保持する文字数",
|
|
824
827
|
"system.base.redact_rule.parameter.keep_octets": "保持するオクテット数",
|
|
825
828
|
"system.base.redact_rule.parameter.length": "保持する長さ",
|
|
@@ -833,6 +836,7 @@
|
|
|
833
836
|
"system.base.redact_rule.template.fixed_length_mask": "固定長マスク",
|
|
834
837
|
"system.base.redact_rule.template.hash_digest": "ハッシュダイジェスト",
|
|
835
838
|
"system.base.redact_rule.template.ip_mask": "IP アドレスマスク",
|
|
839
|
+
"system.base.redact_rule.template.string_mask": "汎用文字列マスク",
|
|
836
840
|
"system.base.redact_rule.template.phone_mask": "電話番号マスク",
|
|
837
841
|
"system.base.redact_rule.template.regex_replace": "正規表現置換",
|
|
838
842
|
"system.base.redact_rule.template.stable_uuid": "安定 UUID",
|
|
@@ -840,6 +844,9 @@
|
|
|
840
844
|
"system.base.redact_rule.template.url_mask": "URL パラメーターマスク",
|
|
841
845
|
"system.base.redact_rule.title": "脱敏ルール",
|
|
842
846
|
"system.base.redact_rule.validation.parameters": "ルールパラメーターを入力してください",
|
|
847
|
+
"system.base.redact_rule.validation.code": "ルールコードを入力してください",
|
|
848
|
+
"system.base.redact_rule.validation.name": "ルール名を入力してください",
|
|
849
|
+
"system.base.redact_rule.validation.rule_type": "ルールタイプを選択してください",
|
|
843
850
|
"system.base.redact_storage_policy.field.column_name": "フィールド",
|
|
844
851
|
"system.base.redact_storage_policy.field.parameters": "ルールパラメーター",
|
|
845
852
|
"system.base.redact_storage_policy.field.rule": "脱敏ルール",
|
|
@@ -892,8 +899,14 @@
|
|
|
892
899
|
"system.base.tenant.field.contact_phone": "連絡先番号",
|
|
893
900
|
"system.base.tenant.field.name": "テナント名",
|
|
894
901
|
"system.base.tenant.message.phone_invalid": "正しい連絡先番号を入力してください",
|
|
902
|
+
"system.base.tenant.message.initial_credentials": "テナントを作成しました。管理者アカウント: {userName}\n初期パスワード: {password}\n安全に保存してください。このダイアログを閉じると再表示できません。",
|
|
903
|
+
"system.base.tenant.message.initial_credentials_warning": "安全に保存してください。このダイアログを閉じると再表示できません。",
|
|
895
904
|
"system.base.tenant.message.protected_delete": "デフォルトのテナントは削除できません",
|
|
896
905
|
"system.base.tenant.message.protected_status": "デフォルトのテナントはステータスを変更できません",
|
|
906
|
+
"system.base.tenant.title.initial_credentials": "テナント管理者の初期認証情報",
|
|
907
|
+
"system.base.tenant.tooltip.copy_credentials": "テナントコード、アカウント、パスワードをコピー",
|
|
908
|
+
"system.base.tenant.tooltip.hide_password": "パスワードを非表示",
|
|
909
|
+
"system.base.tenant.tooltip.show_password": "パスワードを表示",
|
|
897
910
|
"system.base.user.action.create": "新しいユーザーを追加",
|
|
898
911
|
"system.base.user.action.edit": "ユーザーの変更",
|
|
899
912
|
"system.base.user.action.reset_password": "パスワードをリセット",
|
|
@@ -1387,7 +1400,7 @@
|
|
|
1387
1400
|
"system.profile.login_log.field.client_ip": "クライアントIP",
|
|
1388
1401
|
"system.profile.login_log.field.device_id": "デバイス識別子",
|
|
1389
1402
|
"system.profile.login_log.field.login_type": "イベント種別",
|
|
1390
|
-
"system.profile.login_log.field.occurred_at": "
|
|
1403
|
+
"system.profile.login_log.field.occurred_at": "ログイン日時",
|
|
1391
1404
|
"system.profile.login_log.field.reason": "説明",
|
|
1392
1405
|
"system.profile.login_log.field.result": "結果",
|
|
1393
1406
|
"system.profile.login_log.nav_description": "アカウントのログインとログアウト記録を確認",
|
|
@@ -1519,5 +1532,41 @@
|
|
|
1519
1532
|
"system.runtime.log.value.live_console": "リアルタイムコンソール",
|
|
1520
1533
|
"system.sse.error.auth_expired": "SSE 認証の有効期限が切れました",
|
|
1521
1534
|
"system.sse.error.connection_closed": "SSE 接続が閉じられました",
|
|
1522
|
-
"system.sse.error.connection_failed": "SSE 接続に失敗しました: {status}"
|
|
1535
|
+
"system.sse.error.connection_failed": "SSE 接続に失敗しました: {status}",
|
|
1536
|
+
"system.base.tenant_project.field.name": "プロジェクト名",
|
|
1537
|
+
"system.base.tenant_project.field.code": "プロジェクト番号",
|
|
1538
|
+
"system.base.tenant_project.grant": "プロジェクト権限",
|
|
1539
|
+
"system.base.tenant_project.all": "すべてのプロジェクト",
|
|
1540
|
+
"system.base.tenant_project.projects": "指定プロジェクト",
|
|
1541
|
+
"system.base.tenant_project_grant.title": "プロジェクト権限",
|
|
1542
|
+
"system.base.tenant_project_grant.field.subject_type": "権限対象種別",
|
|
1543
|
+
"system.base.tenant_project_grant.field.subject": "権限対象",
|
|
1544
|
+
"system.base.tenant_project_grant.field.scope": "権限範囲",
|
|
1545
|
+
"system.base.tenant_project_grant.tooltip.scope": "オン:この主体に対象テナントの全プロジェクトへのアクセスを付与します。オフ:下で選択したプロジェクトだけにアクセスを付与します。",
|
|
1546
|
+
"system.base.tenant_project_grant.field.projects": "プロジェクト",
|
|
1547
|
+
"system.base.tenant_project_grant.all_projects": "すべてのプロジェクト",
|
|
1548
|
+
"system.base.tenant_project_grant.subject_type.post": "職位",
|
|
1549
|
+
"system.base.tenant_project_grant.subject_type.role": "ロール",
|
|
1550
|
+
"system.base.tenant_project_grant.subject_type.dept": "部門",
|
|
1551
|
+
"system.base.tenant_project_grant.subject_type.user": "ユーザー",
|
|
1552
|
+
"system.base.i18n_custom.resource": "カスタム翻訳",
|
|
1553
|
+
"system.base.i18n_custom.action.create": "カスタム翻訳を追加",
|
|
1554
|
+
"system.base.i18n_custom.action.edit": "カスタム翻訳を編集",
|
|
1555
|
+
"system.base.i18n_custom.field.site": "位置",
|
|
1556
|
+
"system.base.i18n_custom.field.key": "言語キー",
|
|
1557
|
+
"system.base.i18n_custom.field.locale": "言語地域",
|
|
1558
|
+
"system.base.i18n_custom.field.default_value": "既定文言",
|
|
1559
|
+
"system.base.i18n_custom.field.value": "カスタム文言",
|
|
1560
|
+
"system.base.i18n_custom.field.status": "状態",
|
|
1561
|
+
"system.base.i18n_custom.field.remark": "備考",
|
|
1562
|
+
"system.base.i18n_custom.site.system": "システム",
|
|
1563
|
+
"system.base.i18n_custom.site.admin": "管理画面",
|
|
1564
|
+
"system.base.i18n_custom.site.app": "アプリ",
|
|
1565
|
+
"system.base.i18n_custom.placeholder.site": "位置を選択してください",
|
|
1566
|
+
"system.base.i18n_custom.placeholder.key": "言語キーを入力してください。例: common.field.project",
|
|
1567
|
+
"system.base.i18n_custom.placeholder.locale": "言語地域を選択してください",
|
|
1568
|
+
"system.base.i18n_custom.placeholder.value": "カスタム文言を入力してください",
|
|
1569
|
+
"system.base.i18n_custom.placeholder.remark": "備考を入力してください",
|
|
1570
|
+
"system.base.i18n_custom.message.confirm_status": "「{name}」を{action}しますか?",
|
|
1571
|
+
"system.base.i18n_custom.message.confirm_delete": "カスタム翻訳「{name}」を削除しますか?"
|
|
1523
1572
|
}
|
|
@@ -494,6 +494,7 @@
|
|
|
494
494
|
"system.base.login_policy.field.device_blacklist": "设备黑名单",
|
|
495
495
|
"system.base.login_policy.field.device_whitelist": "设备白名单",
|
|
496
496
|
"system.base.login_policy.field.initial_password": "初始化密码",
|
|
497
|
+
"system.base.login_policy.field.password_strength": "强度提示",
|
|
497
498
|
"system.base.login_policy.field.ip_blacklist": "IP 黑名单",
|
|
498
499
|
"system.base.login_policy.field.ip_whitelist": "IP 白名单",
|
|
499
500
|
"system.base.login_policy.field.lock_duration_minutes": "锁定时长(分钟)",
|
|
@@ -806,6 +807,7 @@
|
|
|
806
807
|
"system.base.redact_rule.description.fixed_length_mask": "使用固定字符替换为等长文本",
|
|
807
808
|
"system.base.redact_rule.description.hash_digest": "使用摘要算法生成不可逆结果",
|
|
808
809
|
"system.base.redact_rule.description.ip_mask": "保留 IP 前缀网段并隐藏其余部分",
|
|
810
|
+
"system.base.redact_rule.description.string_mask": "按配置保留字符串首尾字符并掩码中间内容",
|
|
809
811
|
"system.base.redact_rule.description.phone_mask": "保留手机号前三位和后四位",
|
|
810
812
|
"system.base.redact_rule.description.regex_replace": "使用正则表达式替换匹配内容",
|
|
811
813
|
"system.base.redact_rule.description.stable_uuid": "将文本转换为稳定 UUID",
|
|
@@ -820,6 +822,7 @@
|
|
|
820
822
|
"system.base.redact_rule.parameter.char": "替换字符",
|
|
821
823
|
"system.base.redact_rule.parameter.keep_first": "保留开头字符数",
|
|
822
824
|
"system.base.redact_rule.parameter.keep_last": "保留结尾字符数",
|
|
825
|
+
"system.base.redact_rule.parameter.min_mask": "最少脱敏字符数",
|
|
823
826
|
"system.base.redact_rule.parameter.keep_local_first": "保留本地部分字符数",
|
|
824
827
|
"system.base.redact_rule.parameter.keep_octets": "保留网段数",
|
|
825
828
|
"system.base.redact_rule.parameter.length": "保留长度",
|
|
@@ -833,6 +836,7 @@
|
|
|
833
836
|
"system.base.redact_rule.template.fixed_length_mask": "等长掩码",
|
|
834
837
|
"system.base.redact_rule.template.hash_digest": "哈希摘要",
|
|
835
838
|
"system.base.redact_rule.template.ip_mask": "IP 地址掩码",
|
|
839
|
+
"system.base.redact_rule.template.string_mask": "通用字符串掩码",
|
|
836
840
|
"system.base.redact_rule.template.phone_mask": "手机号掩码",
|
|
837
841
|
"system.base.redact_rule.template.regex_replace": "正则替换",
|
|
838
842
|
"system.base.redact_rule.template.stable_uuid": "稳定 UUID",
|
|
@@ -840,6 +844,9 @@
|
|
|
840
844
|
"system.base.redact_rule.template.url_mask": "URL 参数掩码",
|
|
841
845
|
"system.base.redact_rule.title": "脱敏规则",
|
|
842
846
|
"system.base.redact_rule.validation.parameters": "请输入规则参数",
|
|
847
|
+
"system.base.redact_rule.validation.code": "请输入规则编码",
|
|
848
|
+
"system.base.redact_rule.validation.name": "请输入规则名称",
|
|
849
|
+
"system.base.redact_rule.validation.rule_type": "请选择规则类型",
|
|
843
850
|
"system.base.redact_storage_policy.field.column_name": "字段",
|
|
844
851
|
"system.base.redact_storage_policy.field.parameters": "规则参数",
|
|
845
852
|
"system.base.redact_storage_policy.field.rule": "脱敏规则",
|
|
@@ -892,8 +899,14 @@
|
|
|
892
899
|
"system.base.tenant.field.contact_phone": "联系电话",
|
|
893
900
|
"system.base.tenant.field.name": "租户名称",
|
|
894
901
|
"system.base.tenant.message.phone_invalid": "请输入正确的联系电话",
|
|
902
|
+
"system.base.tenant.message.initial_credentials": "租户已创建,管理员账号:{userName}\n初始密码:{password}\n请妥善保存,关闭后将无法再次查看。",
|
|
903
|
+
"system.base.tenant.message.initial_credentials_warning": "请妥善保存,关闭后将无法再次查看。",
|
|
895
904
|
"system.base.tenant.message.protected_delete": "默认租户不能删除",
|
|
896
905
|
"system.base.tenant.message.protected_status": "默认租户不能修改状态",
|
|
906
|
+
"system.base.tenant.title.initial_credentials": "租户管理员初始凭据",
|
|
907
|
+
"system.base.tenant.tooltip.copy_credentials": "复制租户编号、账号和密码",
|
|
908
|
+
"system.base.tenant.tooltip.hide_password": "隐藏密码",
|
|
909
|
+
"system.base.tenant.tooltip.show_password": "显示密码",
|
|
897
910
|
"system.base.user.action.create": "新增用户",
|
|
898
911
|
"system.base.user.action.edit": "修改用户",
|
|
899
912
|
"system.base.user.action.reset_password": "重置密码",
|
|
@@ -1387,7 +1400,7 @@
|
|
|
1387
1400
|
"system.profile.login_log.field.client_ip": "客户端IP",
|
|
1388
1401
|
"system.profile.login_log.field.device_id": "设备标识",
|
|
1389
1402
|
"system.profile.login_log.field.login_type": "事件类型",
|
|
1390
|
-
"system.profile.login_log.field.occurred_at": "
|
|
1403
|
+
"system.profile.login_log.field.occurred_at": "登录时间",
|
|
1391
1404
|
"system.profile.login_log.field.reason": "说明",
|
|
1392
1405
|
"system.profile.login_log.field.result": "结果",
|
|
1393
1406
|
"system.profile.login_log.nav_description": "查看账号登录和退出记录",
|
|
@@ -1519,5 +1532,41 @@
|
|
|
1519
1532
|
"system.runtime.log.value.live_console": "实时控制台",
|
|
1520
1533
|
"system.sse.error.auth_expired": "SSE 认证已失效",
|
|
1521
1534
|
"system.sse.error.connection_closed": "SSE 连接已关闭",
|
|
1522
|
-
"system.sse.error.connection_failed": "SSE 连接失败:{status}"
|
|
1535
|
+
"system.sse.error.connection_failed": "SSE 连接失败:{status}",
|
|
1536
|
+
"system.base.tenant_project.field.name": "项目名称",
|
|
1537
|
+
"system.base.tenant_project.field.code": "项目编号",
|
|
1538
|
+
"system.base.tenant_project.grant": "项目授权",
|
|
1539
|
+
"system.base.tenant_project.all": "全部项目",
|
|
1540
|
+
"system.base.tenant_project.projects": "指定项目",
|
|
1541
|
+
"system.base.tenant_project_grant.title": "项目授权",
|
|
1542
|
+
"system.base.tenant_project_grant.field.subject_type": "授权类型",
|
|
1543
|
+
"system.base.tenant_project_grant.field.subject": "授权主体",
|
|
1544
|
+
"system.base.tenant_project_grant.field.scope": "授权范围",
|
|
1545
|
+
"system.base.tenant_project_grant.tooltip.scope": "开启:授权该主体访问当前租户的全部项目;关闭:仅授权下方选择的项目。",
|
|
1546
|
+
"system.base.tenant_project_grant.field.projects": "授权项目",
|
|
1547
|
+
"system.base.tenant_project_grant.all_projects": "全部项目",
|
|
1548
|
+
"system.base.tenant_project_grant.subject_type.post": "岗位",
|
|
1549
|
+
"system.base.tenant_project_grant.subject_type.role": "角色",
|
|
1550
|
+
"system.base.tenant_project_grant.subject_type.dept": "部门",
|
|
1551
|
+
"system.base.tenant_project_grant.subject_type.user": "用户",
|
|
1552
|
+
"system.base.i18n_custom.resource": "国际化自定义翻译",
|
|
1553
|
+
"system.base.i18n_custom.action.create": "新增自定义翻译",
|
|
1554
|
+
"system.base.i18n_custom.action.edit": "编辑自定义翻译",
|
|
1555
|
+
"system.base.i18n_custom.field.site": "位置",
|
|
1556
|
+
"system.base.i18n_custom.field.key": "语言键",
|
|
1557
|
+
"system.base.i18n_custom.field.locale": "语言区域",
|
|
1558
|
+
"system.base.i18n_custom.field.default_value": "默认文案",
|
|
1559
|
+
"system.base.i18n_custom.field.value": "自定义文案",
|
|
1560
|
+
"system.base.i18n_custom.field.status": "状态",
|
|
1561
|
+
"system.base.i18n_custom.field.remark": "备注",
|
|
1562
|
+
"system.base.i18n_custom.site.system": "系统端",
|
|
1563
|
+
"system.base.i18n_custom.site.admin": "管理端",
|
|
1564
|
+
"system.base.i18n_custom.site.app": "应用端",
|
|
1565
|
+
"system.base.i18n_custom.placeholder.site": "请选择位置",
|
|
1566
|
+
"system.base.i18n_custom.placeholder.key": "请输入语言键,例如 common.field.project",
|
|
1567
|
+
"system.base.i18n_custom.placeholder.locale": "请选择语言区域",
|
|
1568
|
+
"system.base.i18n_custom.placeholder.value": "请输入自定义文案",
|
|
1569
|
+
"system.base.i18n_custom.placeholder.remark": "请输入备注",
|
|
1570
|
+
"system.base.i18n_custom.message.confirm_status": "确定将“{name}”{action}吗?",
|
|
1571
|
+
"system.base.i18n_custom.message.confirm_delete": "确定删除自定义翻译“{name}”吗?"
|
|
1523
1572
|
}
|
|
@@ -494,6 +494,7 @@
|
|
|
494
494
|
"system.base.login_policy.field.device_blacklist": "裝置黑名單",
|
|
495
495
|
"system.base.login_policy.field.device_whitelist": "裝置白名單",
|
|
496
496
|
"system.base.login_policy.field.initial_password": "初始化密碼",
|
|
497
|
+
"system.base.login_policy.field.password_strength": "強度提示",
|
|
497
498
|
"system.base.login_policy.field.ip_blacklist": "IP 黑名單",
|
|
498
499
|
"system.base.login_policy.field.ip_whitelist": "IP 白名單",
|
|
499
500
|
"system.base.login_policy.field.lock_duration_minutes": "鎖定時長(分鐘)",
|
|
@@ -806,6 +807,7 @@
|
|
|
806
807
|
"system.base.redact_rule.description.fixed_length_mask": "使用固定字元取代為等長文字",
|
|
807
808
|
"system.base.redact_rule.description.hash_digest": "使用摘要演算法產生不可逆結果",
|
|
808
809
|
"system.base.redact_rule.description.ip_mask": "保留 IP 前綴網段並隱藏其餘部分",
|
|
810
|
+
"system.base.redact_rule.description.string_mask": "依設定保留字串首尾字元並遮罩中間內容",
|
|
809
811
|
"system.base.redact_rule.description.phone_mask": "保留手機號碼前三碼和後四碼",
|
|
810
812
|
"system.base.redact_rule.description.regex_replace": "使用正規表示式取代符合的內容",
|
|
811
813
|
"system.base.redact_rule.description.stable_uuid": "將文字轉換為穩定 UUID",
|
|
@@ -820,6 +822,7 @@
|
|
|
820
822
|
"system.base.redact_rule.parameter.char": "取代字元",
|
|
821
823
|
"system.base.redact_rule.parameter.keep_first": "保留開頭字元數",
|
|
822
824
|
"system.base.redact_rule.parameter.keep_last": "保留結尾字元數",
|
|
825
|
+
"system.base.redact_rule.parameter.min_mask": "最少遮罩字元數",
|
|
823
826
|
"system.base.redact_rule.parameter.keep_local_first": "保留本機部分字元數",
|
|
824
827
|
"system.base.redact_rule.parameter.keep_octets": "保留網段數",
|
|
825
828
|
"system.base.redact_rule.parameter.length": "保留長度",
|
|
@@ -833,6 +836,7 @@
|
|
|
833
836
|
"system.base.redact_rule.template.fixed_length_mask": "等長遮罩",
|
|
834
837
|
"system.base.redact_rule.template.hash_digest": "雜湊摘要",
|
|
835
838
|
"system.base.redact_rule.template.ip_mask": "IP 位址遮罩",
|
|
839
|
+
"system.base.redact_rule.template.string_mask": "通用字串遮罩",
|
|
836
840
|
"system.base.redact_rule.template.phone_mask": "手機號碼遮罩",
|
|
837
841
|
"system.base.redact_rule.template.regex_replace": "正規表示式取代",
|
|
838
842
|
"system.base.redact_rule.template.stable_uuid": "穩定 UUID",
|
|
@@ -840,6 +844,9 @@
|
|
|
840
844
|
"system.base.redact_rule.template.url_mask": "URL 參數遮罩",
|
|
841
845
|
"system.base.redact_rule.title": "脫敏規則",
|
|
842
846
|
"system.base.redact_rule.validation.parameters": "請輸入規則參數",
|
|
847
|
+
"system.base.redact_rule.validation.code": "請輸入規則編碼",
|
|
848
|
+
"system.base.redact_rule.validation.name": "請輸入規則名稱",
|
|
849
|
+
"system.base.redact_rule.validation.rule_type": "請選擇規則類型",
|
|
843
850
|
"system.base.redact_storage_policy.field.column_name": "欄位",
|
|
844
851
|
"system.base.redact_storage_policy.field.parameters": "規則參數",
|
|
845
852
|
"system.base.redact_storage_policy.field.rule": "脫敏規則",
|
|
@@ -892,8 +899,14 @@
|
|
|
892
899
|
"system.base.tenant.field.contact_phone": "聯絡電話",
|
|
893
900
|
"system.base.tenant.field.name": "租戶名稱",
|
|
894
901
|
"system.base.tenant.message.phone_invalid": "請輸入正確的聯絡電話",
|
|
902
|
+
"system.base.tenant.message.initial_credentials": "租戶已建立,管理員賬號:{userName}\n初始密碼:{password}\n請妥善保存,關閉後將無法再次查看。",
|
|
903
|
+
"system.base.tenant.message.initial_credentials_warning": "請妥善保存,關閉後將無法再次查看。",
|
|
895
904
|
"system.base.tenant.message.protected_delete": "預設租戶不能刪除",
|
|
896
905
|
"system.base.tenant.message.protected_status": "預設租戶不能修改狀態",
|
|
906
|
+
"system.base.tenant.title.initial_credentials": "租戶管理員初始憑據",
|
|
907
|
+
"system.base.tenant.tooltip.copy_credentials": "複製租戶編號、賬號和密碼",
|
|
908
|
+
"system.base.tenant.tooltip.hide_password": "隱藏密碼",
|
|
909
|
+
"system.base.tenant.tooltip.show_password": "顯示密碼",
|
|
897
910
|
"system.base.user.action.create": "新增使用者",
|
|
898
911
|
"system.base.user.action.edit": "修改使用者",
|
|
899
912
|
"system.base.user.action.reset_password": "重置密碼",
|
|
@@ -1387,7 +1400,7 @@
|
|
|
1387
1400
|
"system.profile.login_log.field.client_ip": "用戶端 IP",
|
|
1388
1401
|
"system.profile.login_log.field.device_id": "裝置識別碼",
|
|
1389
1402
|
"system.profile.login_log.field.login_type": "事件類型",
|
|
1390
|
-
"system.profile.login_log.field.occurred_at": "
|
|
1403
|
+
"system.profile.login_log.field.occurred_at": "登入時間",
|
|
1391
1404
|
"system.profile.login_log.field.reason": "說明",
|
|
1392
1405
|
"system.profile.login_log.field.result": "結果",
|
|
1393
1406
|
"system.profile.login_log.nav_description": "查看帳號登入與登出記錄",
|
|
@@ -1519,5 +1532,41 @@
|
|
|
1519
1532
|
"system.runtime.log.value.live_console": "即時主控台",
|
|
1520
1533
|
"system.sse.error.auth_expired": "SSE 驗證已失效",
|
|
1521
1534
|
"system.sse.error.connection_closed": "SSE 連線已關閉",
|
|
1522
|
-
"system.sse.error.connection_failed": "SSE 連線失敗:{status}"
|
|
1535
|
+
"system.sse.error.connection_failed": "SSE 連線失敗:{status}",
|
|
1536
|
+
"system.base.tenant_project.field.name": "專案名稱",
|
|
1537
|
+
"system.base.tenant_project.field.code": "專案編號",
|
|
1538
|
+
"system.base.tenant_project.grant": "專案授權",
|
|
1539
|
+
"system.base.tenant_project.all": "全部專案",
|
|
1540
|
+
"system.base.tenant_project.projects": "指定專案",
|
|
1541
|
+
"system.base.tenant_project_grant.title": "專案授權",
|
|
1542
|
+
"system.base.tenant_project_grant.field.subject_type": "授權類型",
|
|
1543
|
+
"system.base.tenant_project_grant.field.subject": "授權主體",
|
|
1544
|
+
"system.base.tenant_project_grant.field.scope": "授權範圍",
|
|
1545
|
+
"system.base.tenant_project_grant.tooltip.scope": "開啟:授予此主體目前租戶的全部專案權限;關閉:僅授予下方選取的專案權限。",
|
|
1546
|
+
"system.base.tenant_project_grant.field.projects": "授權專案",
|
|
1547
|
+
"system.base.tenant_project_grant.all_projects": "全部專案",
|
|
1548
|
+
"system.base.tenant_project_grant.subject_type.post": "職位",
|
|
1549
|
+
"system.base.tenant_project_grant.subject_type.role": "角色",
|
|
1550
|
+
"system.base.tenant_project_grant.subject_type.dept": "部門",
|
|
1551
|
+
"system.base.tenant_project_grant.subject_type.user": "使用者",
|
|
1552
|
+
"system.base.i18n_custom.resource": "自訂翻譯",
|
|
1553
|
+
"system.base.i18n_custom.action.create": "新增自訂翻譯",
|
|
1554
|
+
"system.base.i18n_custom.action.edit": "編輯自訂翻譯",
|
|
1555
|
+
"system.base.i18n_custom.field.site": "位置",
|
|
1556
|
+
"system.base.i18n_custom.field.key": "語言鍵",
|
|
1557
|
+
"system.base.i18n_custom.field.locale": "語言區域",
|
|
1558
|
+
"system.base.i18n_custom.field.default_value": "預設文案",
|
|
1559
|
+
"system.base.i18n_custom.field.value": "自訂文案",
|
|
1560
|
+
"system.base.i18n_custom.field.status": "狀態",
|
|
1561
|
+
"system.base.i18n_custom.field.remark": "備註",
|
|
1562
|
+
"system.base.i18n_custom.site.system": "系統端",
|
|
1563
|
+
"system.base.i18n_custom.site.admin": "管理端",
|
|
1564
|
+
"system.base.i18n_custom.site.app": "應用端",
|
|
1565
|
+
"system.base.i18n_custom.placeholder.site": "請選擇位置",
|
|
1566
|
+
"system.base.i18n_custom.placeholder.key": "請輸入語言鍵,例如 common.field.project",
|
|
1567
|
+
"system.base.i18n_custom.placeholder.locale": "請選擇語言區域",
|
|
1568
|
+
"system.base.i18n_custom.placeholder.value": "請輸入自訂文案",
|
|
1569
|
+
"system.base.i18n_custom.placeholder.remark": "請輸入備註",
|
|
1570
|
+
"system.base.i18n_custom.message.confirm_status": "確定要將「{name}」{action}嗎?",
|
|
1571
|
+
"system.base.i18n_custom.message.confirm_delete": "確定要刪除自訂翻譯「{name}」嗎?"
|
|
1523
1572
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Component } from "vue";
|
|
2
2
|
import { defineAdminModule } from "@liujitcn/kratos-admin-core";
|
|
3
|
-
import Ai from "./components/Ai.vue";
|
|
4
|
-
import ForcedPasswordDialog from "./components/ForcedPasswordDialog.vue";
|
|
5
|
-
import Notification from "./components/Notification.vue";
|
|
3
|
+
import Ai from "./components/ai/Ai.vue";
|
|
4
|
+
import ForcedPasswordDialog from "./components/account/ForcedPasswordDialog.vue";
|
|
5
|
+
import Notification from "./components/notification/Notification.vue";
|
|
6
6
|
|
|
7
7
|
// 语言包由同步脚本生成并注册,供 System 页面、组件和代码生成页面使用。
|
|
8
8
|
import { LOCALE_MESSAGES } from "./locales/generated";
|
|
@@ -40,6 +40,18 @@ export interface GetConfigResponse {
|
|
|
40
40
|
configs: ConfigItem[];
|
|
41
41
|
/** AI 助手是否可用 */
|
|
42
42
|
ai_enabled: boolean;
|
|
43
|
+
/** 全部语言的自定义国际化覆盖项 */
|
|
44
|
+
i18n_customs: I18nCustomItem[];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** 全部语言的自定义国际化覆盖项。 */
|
|
48
|
+
export interface I18nCustomItem {
|
|
49
|
+
/** 语言区域 */
|
|
50
|
+
locale: string;
|
|
51
|
+
/** 国际化语言键 */
|
|
52
|
+
key: string;
|
|
53
|
+
/** 自定义翻译内容 */
|
|
54
|
+
value: string;
|
|
43
55
|
}
|
|
44
56
|
|
|
45
57
|
/** Base系统配置公共服务 */
|