@liujitcn/kratos-admin-system 0.0.27 → 0.0.29
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 +1 -1
- package/dist/package/declarations/src/api/system/base_i18n.d.ts +5 -5
- package/dist/package/declarations/src/api/system/runtime_log.d.ts +13 -0
- package/dist/package/declarations/src/api/system/runtime_log_sse.d.ts +8 -0
- package/dist/package/declarations/src/components/DynamicI18nCell.vue.d.ts +16 -0
- package/dist/package/declarations/src/components/DynamicI18nEditor.vue.d.ts +20 -0
- package/dist/package/declarations/src/components/dynamicI18n.d.ts +38 -0
- package/dist/package/declarations/src/locales/generated.d.ts +168 -52
- package/dist/package/declarations/src/rpc/system/admin/v1/base_config.d.ts +3 -3
- package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +4 -4
- package/dist/package/declarations/src/rpc/system/admin/v1/base_i18n.d.ts +23 -23
- package/dist/package/declarations/src/rpc/system/admin/v1/base_menu.d.ts +2 -2
- package/dist/package/declarations/src/rpc/system/admin/v1/code_gen.d.ts +1 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/ops_monitoring.d.ts +4 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/project_document.d.ts +4 -6
- package/dist/package/declarations/src/rpc/system/admin/v1/runtime_log.d.ts +96 -0
- package/dist/package/declarations/src/views/tool/runtime-log/index.vue.d.ts +3 -0
- package/dist/package/src/api/system/base_i18n.ts +12 -12
- package/dist/package/src/api/system/runtime_log.ts +80 -0
- package/dist/package/src/api/system/runtime_log_sse.ts +40 -0
- package/dist/package/src/components/{DynamicTranslationCell.vue → DynamicI18nCell.vue} +50 -50
- package/dist/package/src/components/{DynamicTranslationEditor.vue → DynamicI18nEditor.vue} +45 -45
- package/dist/package/src/components/{dynamicTranslation.ts → dynamicI18n.ts} +15 -15
- package/dist/package/src/locales/README.md +1 -1
- package/dist/package/src/locales/en-US.json +46 -17
- package/dist/package/src/locales/ja-JP.json +44 -15
- package/dist/package/src/locales/zh-CN.json +44 -15
- package/dist/package/src/locales/zh-TW.json +44 -15
- package/dist/package/src/rpc/system/admin/v1/base_config.ts +3 -3
- package/dist/package/src/rpc/system/admin/v1/base_dict.ts +4 -4
- package/dist/package/src/rpc/system/admin/v1/base_i18n.ts +23 -23
- package/dist/package/src/rpc/system/admin/v1/base_menu.ts +2 -2
- package/dist/package/src/rpc/system/admin/v1/code_gen.ts +1 -1
- package/dist/package/src/rpc/system/admin/v1/ops_monitoring.ts +4 -0
- package/dist/package/src/rpc/system/admin/v1/project_document.ts +4 -7
- package/dist/package/src/rpc/system/admin/v1/runtime_log.ts +113 -0
- package/dist/package/src/views/base/config/index.vue +38 -38
- package/dist/package/src/views/base/dict/index.vue +23 -23
- package/dist/package/src/views/base/dict/item.vue +25 -25
- package/dist/package/src/views/base/menu/index.vue +23 -23
- package/dist/package/src/views/tool/api-doc/index.vue +14 -6
- package/dist/package/src/views/tool/code-gen/code-preview/index.vue +23 -6
- package/dist/package/src/views/tool/code-gen/columns/index.vue +1 -1
- package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +96 -14
- package/dist/package/src/views/tool/code-gen/table/index.vue +33 -1
- package/dist/package/src/views/tool/ops-monitoring/index.vue +130 -24
- package/dist/package/src/views/tool/project-doc/index.vue +9 -4
- package/dist/package/src/views/tool/runtime-log/index.vue +883 -0
- package/package.json +2 -2
- package/dist/package/declarations/src/components/DynamicTranslationCell.vue.d.ts +0 -16
- package/dist/package/declarations/src/components/DynamicTranslationEditor.vue.d.ts +0 -20
- package/dist/package/declarations/src/components/dynamicTranslation.d.ts +0 -38
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="
|
|
3
|
-
<div class="
|
|
2
|
+
<div class="i18n-editor">
|
|
3
|
+
<div class="i18n-editor__toolbar">
|
|
4
4
|
<el-button
|
|
5
5
|
type="primary"
|
|
6
6
|
size="small"
|
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
:disabled="!canTranslate"
|
|
10
10
|
@click="handleBatchTranslate"
|
|
11
11
|
>
|
|
12
|
-
{{ t("system.base.
|
|
12
|
+
{{ t("system.base.i18n.action.batch_translate") }}
|
|
13
13
|
</el-button>
|
|
14
14
|
</div>
|
|
15
|
-
<div v-for="item in localValues" :key="item.locale" class="
|
|
16
|
-
<div class="
|
|
15
|
+
<div v-for="item in localValues" :key="item.locale" class="i18n-editor__row">
|
|
16
|
+
<div class="i18n-editor__heading">
|
|
17
17
|
<span>{{ getLanguageLabel(item.locale) }}</span>
|
|
18
18
|
</div>
|
|
19
|
-
<div class="
|
|
19
|
+
<div class="i18n-editor__control" :class="{ 'i18n-editor__control--multiline': multiline }">
|
|
20
20
|
<el-input
|
|
21
21
|
:model-value="item.text"
|
|
22
22
|
:maxlength="maxlength"
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
:rows="multiline ? 6 : undefined"
|
|
25
25
|
:disabled="translating || translatingLocale === item.locale"
|
|
26
26
|
show-word-limit
|
|
27
|
-
:placeholder="t('system.base.
|
|
27
|
+
:placeholder="t('system.base.i18n.placeholder.text', { language: getLanguageLabel(item.locale) })"
|
|
28
28
|
@update:model-value="value => updateText(item.locale, value)"
|
|
29
29
|
/>
|
|
30
30
|
<el-button
|
|
31
|
-
class="
|
|
31
|
+
class="i18n-editor__translate"
|
|
32
32
|
link
|
|
33
33
|
type="primary"
|
|
34
34
|
size="small"
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
:disabled="!props.source || Boolean(item.text) || translating || Boolean(translatingLocale)"
|
|
38
38
|
@click="handleTranslate(item.locale)"
|
|
39
39
|
>
|
|
40
|
-
{{ t("system.base.
|
|
40
|
+
{{ t("system.base.i18n.action.translate") }}
|
|
41
41
|
</el-button>
|
|
42
42
|
</div>
|
|
43
43
|
</div>
|
|
@@ -50,26 +50,26 @@ import { ElMessage } from "element-plus";
|
|
|
50
50
|
import { Promotion } from "@element-plus/icons-vue";
|
|
51
51
|
import { t, useLocaleStore } from "@liujitcn/kratos-admin-core";
|
|
52
52
|
import { defBaseI18nService } from "@liujitcn/kratos-admin-system/api/system/base_i18n";
|
|
53
|
-
import { getLanguageLabel, type
|
|
53
|
+
import { getLanguageLabel, type DynamicI18nValue } from "./dynamicI18n";
|
|
54
54
|
|
|
55
|
-
/**
|
|
56
|
-
interface
|
|
57
|
-
modelValue:
|
|
55
|
+
/** DynamicI18nEditorProps 动态翻译编辑器属性。 */
|
|
56
|
+
interface DynamicI18nEditorProps {
|
|
57
|
+
modelValue: DynamicI18nValue[];
|
|
58
58
|
/** 当前语言源文本。 */
|
|
59
59
|
source?: string;
|
|
60
60
|
maxlength?: number;
|
|
61
61
|
multiline?: boolean;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
const props = withDefaults(defineProps<
|
|
64
|
+
const props = withDefaults(defineProps<DynamicI18nEditorProps>(), {
|
|
65
65
|
source: "",
|
|
66
66
|
maxlength: 100,
|
|
67
67
|
multiline: false
|
|
68
68
|
});
|
|
69
69
|
|
|
70
70
|
const { locale: currentLocale } = useLocaleStore();
|
|
71
|
-
const emit = defineEmits<{ "update:modelValue": [value:
|
|
72
|
-
const localValues = ref<
|
|
71
|
+
const emit = defineEmits<{ "update:modelValue": [value: DynamicI18nValue[]] }>();
|
|
72
|
+
const localValues = ref<DynamicI18nValue[]>([]);
|
|
73
73
|
const translating = ref(false);
|
|
74
74
|
const translatingLocale = ref("");
|
|
75
75
|
const canTranslate = computed(() => Boolean(props.source) && localValues.value.some(item => !item.text && item.locale !== currentLocale.value));
|
|
@@ -83,7 +83,7 @@ watch(
|
|
|
83
83
|
);
|
|
84
84
|
|
|
85
85
|
/** updateText 更新指定语言的人工译文。 */
|
|
86
|
-
function updateText(locale:
|
|
86
|
+
function updateText(locale: DynamicI18nValue["locale"], text: string) {
|
|
87
87
|
const values = localValues.value.map(item => (item.locale === locale ? { ...item, text } : item));
|
|
88
88
|
localValues.value = values;
|
|
89
89
|
emit("update:modelValue", values);
|
|
@@ -95,29 +95,29 @@ async function handleBatchTranslate() {
|
|
|
95
95
|
translating.value = true;
|
|
96
96
|
try {
|
|
97
97
|
const pending = localValues.value.filter(item => !item.text && item.locale !== currentLocale.value);
|
|
98
|
-
const response = await defBaseI18nService.
|
|
99
|
-
const
|
|
100
|
-
const failed = pending.filter(item => !
|
|
101
|
-
if (
|
|
98
|
+
const response = await defBaseI18nService.DraftBaseI18n({ source: props.source });
|
|
99
|
+
const i18ns = new Map(response.i18ns.map(item => [item.locale, item.i18n]));
|
|
100
|
+
const failed = pending.filter(item => !i18ns.has(item.locale)).length;
|
|
101
|
+
if (i18ns.size) {
|
|
102
102
|
const values = localValues.value.map(item => {
|
|
103
|
-
const
|
|
104
|
-
return
|
|
103
|
+
const i18n = i18ns.get(item.locale);
|
|
104
|
+
return i18n === undefined ? item : { ...item, text: i18n };
|
|
105
105
|
});
|
|
106
106
|
localValues.value = values;
|
|
107
107
|
emit("update:modelValue", values);
|
|
108
108
|
}
|
|
109
109
|
if (failed) {
|
|
110
110
|
ElMessage.warning(
|
|
111
|
-
t("system.base.
|
|
112
|
-
success:
|
|
111
|
+
t("system.base.i18n.message.batch_translate_partial", {
|
|
112
|
+
success: i18ns.size,
|
|
113
113
|
failed
|
|
114
114
|
})
|
|
115
115
|
);
|
|
116
116
|
} else {
|
|
117
|
-
ElMessage.success(t("system.base.
|
|
117
|
+
ElMessage.success(t("system.base.i18n.message.batch_translate_success", { count: i18ns.size }));
|
|
118
118
|
}
|
|
119
119
|
} catch {
|
|
120
|
-
ElMessage.error(t("system.base.
|
|
120
|
+
ElMessage.error(t("system.base.i18n.message.batch_translate_failed"));
|
|
121
121
|
} finally {
|
|
122
122
|
translating.value = false;
|
|
123
123
|
}
|
|
@@ -129,15 +129,15 @@ async function handleTranslate(locale: string) {
|
|
|
129
129
|
if (!item || item.text || item.locale === currentLocale.value || !props.source || translating.value || translatingLocale.value) return;
|
|
130
130
|
translatingLocale.value = locale;
|
|
131
131
|
try {
|
|
132
|
-
const response = await defBaseI18nService.
|
|
133
|
-
const
|
|
134
|
-
if (!
|
|
135
|
-
const values = localValues.value.map(value => (value.locale === locale ? { ...value, text:
|
|
132
|
+
const response = await defBaseI18nService.DraftBaseI18n({ source: props.source, locale });
|
|
133
|
+
const i18n = response.i18ns.find(item => item.locale === locale)?.i18n;
|
|
134
|
+
if (!i18n) throw new Error("i18n not found");
|
|
135
|
+
const values = localValues.value.map(value => (value.locale === locale ? { ...value, text: i18n } : value));
|
|
136
136
|
localValues.value = values;
|
|
137
137
|
emit("update:modelValue", values);
|
|
138
|
-
ElMessage.success(t("system.base.
|
|
138
|
+
ElMessage.success(t("system.base.i18n.message.translate_success", { language: getLanguageLabel(locale) }));
|
|
139
139
|
} catch {
|
|
140
|
-
ElMessage.error(t("system.base.
|
|
140
|
+
ElMessage.error(t("system.base.i18n.message.translate_failed", { language: getLanguageLabel(locale) }));
|
|
141
141
|
} finally {
|
|
142
142
|
translatingLocale.value = "";
|
|
143
143
|
}
|
|
@@ -146,51 +146,51 @@ async function handleTranslate(locale: string) {
|
|
|
146
146
|
</script>
|
|
147
147
|
|
|
148
148
|
<style scoped>
|
|
149
|
-
.
|
|
149
|
+
.i18n-editor {
|
|
150
150
|
display: flex;
|
|
151
151
|
flex-direction: column;
|
|
152
152
|
gap: 14px;
|
|
153
153
|
width: 100%;
|
|
154
154
|
}
|
|
155
|
-
.
|
|
155
|
+
.i18n-editor__toolbar {
|
|
156
156
|
display: flex;
|
|
157
157
|
justify-content: flex-end;
|
|
158
158
|
}
|
|
159
|
-
.
|
|
159
|
+
.i18n-editor__row {
|
|
160
160
|
display: flex;
|
|
161
161
|
flex-direction: column;
|
|
162
162
|
gap: 6px;
|
|
163
163
|
}
|
|
164
|
-
.
|
|
165
|
-
.
|
|
164
|
+
.i18n-editor__heading,
|
|
165
|
+
.i18n-editor__control {
|
|
166
166
|
display: flex;
|
|
167
167
|
gap: 8px;
|
|
168
168
|
align-items: center;
|
|
169
169
|
}
|
|
170
|
-
.
|
|
170
|
+
.i18n-editor__heading {
|
|
171
171
|
color: var(--el-text-color-regular);
|
|
172
172
|
}
|
|
173
|
-
.
|
|
173
|
+
.i18n-editor__control {
|
|
174
174
|
position: relative;
|
|
175
175
|
width: 100%;
|
|
176
176
|
}
|
|
177
|
-
.
|
|
177
|
+
.i18n-editor__control :deep(.el-input) {
|
|
178
178
|
flex: 1;
|
|
179
179
|
}
|
|
180
|
-
.
|
|
180
|
+
.i18n-editor__control--multiline :deep(.el-textarea__inner) {
|
|
181
181
|
padding-right: 78px;
|
|
182
182
|
}
|
|
183
|
-
.
|
|
183
|
+
.i18n-editor__control:not(.i18n-editor__control--multiline) :deep(.el-input__suffix) {
|
|
184
184
|
padding-right: 78px;
|
|
185
185
|
}
|
|
186
|
-
.
|
|
186
|
+
.i18n-editor__translate {
|
|
187
187
|
position: absolute;
|
|
188
188
|
z-index: 1;
|
|
189
189
|
top: 50%;
|
|
190
190
|
right: 8px;
|
|
191
191
|
transform: translateY(-50%);
|
|
192
192
|
}
|
|
193
|
-
.
|
|
193
|
+
.i18n-editor__control--multiline .i18n-editor__translate {
|
|
194
194
|
top: 8px;
|
|
195
195
|
transform: none;
|
|
196
196
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { getEnabledBaseLanguages } from "@liujitcn/kratos-admin-system/api/system/base_language";
|
|
2
|
-
import type {
|
|
2
|
+
import type { I18nTargetType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
export interface
|
|
4
|
+
/** DynamicI18nValue 动态资源单语言翻译编辑状态。 */
|
|
5
|
+
export interface DynamicI18nValue {
|
|
6
6
|
/** 语言代码。 */
|
|
7
7
|
locale: string;
|
|
8
8
|
text: string;
|
|
9
9
|
id: number;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
export interface
|
|
14
|
-
target_type?:
|
|
12
|
+
/** DynamicI18nRecord 描述三类动态资源翻译共有字段。 */
|
|
13
|
+
export interface DynamicI18nRecord extends Omit<DynamicI18nValue, "text"> {
|
|
14
|
+
target_type?: I18nTargetType;
|
|
15
15
|
target_id?: number;
|
|
16
16
|
name?: string;
|
|
17
17
|
/** 兼容旧接口缓存中的字段名。 */
|
|
@@ -40,12 +40,12 @@ export function getLanguageLabel(locale: string): string {
|
|
|
40
40
|
return language?.native_name || language?.language_name || locale;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
/**
|
|
44
|
-
export function
|
|
45
|
-
records:
|
|
43
|
+
/** normalizeDynamicI18ns 将后端翻译记录补齐为全部非主语言编辑状态。 */
|
|
44
|
+
export function normalizeDynamicI18ns(
|
|
45
|
+
records: DynamicI18nRecord[] | undefined,
|
|
46
46
|
_textField: "title" | "name" | "label",
|
|
47
47
|
locales: string[] = getEditableLanguageOptions().map(item => item.value)
|
|
48
|
-
):
|
|
48
|
+
): DynamicI18nValue[] {
|
|
49
49
|
return locales.map(locale => {
|
|
50
50
|
const record = records?.find(item => item.locale === locale);
|
|
51
51
|
return {
|
|
@@ -56,11 +56,11 @@ export function normalizeDynamicTranslations(
|
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
/**
|
|
60
|
-
export function
|
|
61
|
-
values:
|
|
62
|
-
targetType:
|
|
59
|
+
/** serializeDynamicI18ns 将编辑状态转换回后端资源翻译结构。 */
|
|
60
|
+
export function serializeDynamicI18ns(
|
|
61
|
+
values: DynamicI18nValue[],
|
|
62
|
+
targetType: I18nTargetType,
|
|
63
63
|
targetId: number
|
|
64
|
-
): Array<{ id: number; target_type:
|
|
64
|
+
): Array<{ id: number; target_type: I18nTargetType; target_id: number; locale: string; name: string }> {
|
|
65
65
|
return values.map(({ id, locale, text }) => ({ id, target_type: targetType, target_id: targetId, locale, name: text }));
|
|
66
66
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
| `system.profile.*` | 个人资料、安全设置和用户中心导航。 | `src/views/profile/**`、`src/module.ts` 的用户菜单。 |
|
|
18
18
|
| `system.base.*` | 区域、配置、部门、字典、岗位、角色、租户、用户等基础管理页面。 | `src/views/base/**`。 |
|
|
19
19
|
| `system.code.gen.*` | 代码生成配置、预览、列配置和多语言编辑。 | `src/views/tool/code-gen/**`。 |
|
|
20
|
-
| `system.
|
|
20
|
+
| `system.i18n.*` | 动态翻译编辑、草稿生成和语言包状态。 | `src/components/DynamicI18nEditor.vue`、代码生成语言编辑组件。 |
|
|
21
21
|
|
|
22
22
|
语言包由生成的 `generated.ts` 传入 `systemAdminModule.messages`,由 core 的 `registerLocaleMessages` 校验语言键集合、命名空间和占位符后注册到 Vue I18n;业务代码统一使用 `t('system....')` 或 `useLocaleStore()` 读取。
|
|
23
23
|
|
|
@@ -248,17 +248,17 @@
|
|
|
248
248
|
"system.base.user.message.confirm_delete_selected": "Delete the selected users?",
|
|
249
249
|
"system.base.user.message.delete_success": "User deleted",
|
|
250
250
|
"system.base.user.message.delete_canceled": "User deletion canceled",
|
|
251
|
-
"system.base.
|
|
252
|
-
"system.base.
|
|
253
|
-
"system.base.
|
|
254
|
-
"system.base.
|
|
255
|
-
"system.base.
|
|
256
|
-
"system.base.
|
|
257
|
-
"system.base.
|
|
258
|
-
"system.base.
|
|
259
|
-
"system.base.
|
|
260
|
-
"system.base.
|
|
261
|
-
"system.base.
|
|
251
|
+
"system.base.i18n.field.i18ns": "I18ns",
|
|
252
|
+
"system.base.i18n.field.name_i18ns": "Name i18ns",
|
|
253
|
+
"system.base.i18n.field.value_i18ns": "Value i18ns",
|
|
254
|
+
"system.base.i18n.placeholder.text": "Enter the {language} i18n",
|
|
255
|
+
"system.base.i18n.action.translate": "Translate",
|
|
256
|
+
"system.base.i18n.action.batch_translate": "Translate all",
|
|
257
|
+
"system.base.i18n.message.translate_success": "{language} translated",
|
|
258
|
+
"system.base.i18n.message.translate_failed": "Failed to translate {language}",
|
|
259
|
+
"system.base.i18n.message.batch_translate_success": "Translated {count} languages",
|
|
260
|
+
"system.base.i18n.message.batch_translate_partial": "Translated {success} languages, {failed} failed",
|
|
261
|
+
"system.base.i18n.message.batch_translate_failed": "Batch i18n failed",
|
|
262
262
|
"system.base.menu.title.list": "Menus",
|
|
263
263
|
"system.base.menu.action.create": "Create menu",
|
|
264
264
|
"system.base.menu.action.edit": "Edit menu",
|
|
@@ -626,14 +626,14 @@
|
|
|
626
626
|
"system.code.gen.validation.left_tree_parent_required": "Select the tree parent column",
|
|
627
627
|
"system.code.gen.validation.left_tree_label_required": "Select the tree label column",
|
|
628
628
|
"system.code.gen.validation.left_tree_value_required": "Select the tree value column",
|
|
629
|
-
"system.code.gen.i18n.field.
|
|
629
|
+
"system.code.gen.i18n.field.i18ns": "Non-primary language descriptions",
|
|
630
630
|
"system.code.gen.i18n.action.edit_column": "Edit non-primary language field descriptions",
|
|
631
631
|
"system.code.gen.i18n.status.complete": "Complete",
|
|
632
632
|
"system.code.gen.i18n.status.missing": "Missing",
|
|
633
633
|
"system.code.gen.i18n.message.missing": "Required before generation: {locales}",
|
|
634
634
|
"system.code.gen.i18n.placeholder.comment": "Chinese source: {source}",
|
|
635
635
|
"system.code.gen.i18n.placeholder.left_tree_comment": "Chinese tree source: {source}",
|
|
636
|
-
"system.code.gen.i18n.tooltip.table": "Maintain non-primary language descriptions used by generated pages, menus, and locale files. Incomplete drafts can be saved, but generation requires all
|
|
636
|
+
"system.code.gen.i18n.tooltip.table": "Maintain non-primary language descriptions used by generated pages, menus, and locale files. Incomplete drafts can be saved, but generation requires all i18ns.",
|
|
637
637
|
"system.code.gen.table.title.create": "Create code generation table",
|
|
638
638
|
"system.code.gen.table.title.edit": "Edit code generation table",
|
|
639
639
|
"system.code.gen.table.field.name": "Business table",
|
|
@@ -685,7 +685,7 @@
|
|
|
685
685
|
"system.code.gen.table.tooltip.left_tree_lazy": "Request children only when a node is expanded.",
|
|
686
686
|
"system.code.gen.table.tooltip.gen_backend": "Generate Proto, backend Biz, Service, and registration code.",
|
|
687
687
|
"system.code.gen.table.tooltip.gen_frontend": "Generate the frontend API, pages, and locale files for all supported languages.",
|
|
688
|
-
"system.code.gen.table.tooltip.gen_sql": "Synchronize page menus, button permissions, and
|
|
688
|
+
"system.code.gen.table.tooltip.gen_sql": "Synchronize page menus, button permissions, and i18ns for all supported languages.",
|
|
689
689
|
"system.code.gen.table.tooltip.status": "Disabled configurations are read-only. Successful generation sets the status to generated.",
|
|
690
690
|
"system.code.gen.table.tooltip.remark": "Visible to maintainers only and not used for generated names.",
|
|
691
691
|
"system.code.gen.table.value.disabled_module": "{module} (disabled)",
|
|
@@ -881,7 +881,7 @@
|
|
|
881
881
|
"system.code.gen.preview.message.create_success": "Created",
|
|
882
882
|
"system.code.gen.preview.message.update_success": "Updated",
|
|
883
883
|
"system.code.gen.preview.message.delete_success": "Deleted",
|
|
884
|
-
"system.code.gen.preview.message.
|
|
884
|
+
"system.code.gen.preview.message.missing_i18ns": "Complete these i18ns before generation: {items}",
|
|
885
885
|
"system.code.gen.preview.value.list_separator": ", ",
|
|
886
886
|
"system.project.document.title.navigation": "Project document navigation",
|
|
887
887
|
"system.project.document.placeholder.search": "Search projects or paths",
|
|
@@ -912,7 +912,12 @@
|
|
|
912
912
|
"system.ops_monitoring.error_rate": "Error rate",
|
|
913
913
|
"system.ops_monitoring.status.label": "Status",
|
|
914
914
|
"system.ops_monitoring.instance_resources": "Instance resources",
|
|
915
|
-
"system.ops_monitoring.current_recent_sample": "Most recent
|
|
915
|
+
"system.ops_monitoring.current_recent_sample": "Most recent instance resource sample",
|
|
916
|
+
"system.ops_monitoring.node_metric.heap_memory": "Heap memory",
|
|
917
|
+
"system.ops_monitoring.node_metric.memory": "Memory",
|
|
918
|
+
"system.ops_monitoring.node_metric.disk": "Disk",
|
|
919
|
+
"system.ops_monitoring.node_metric.current": "Used",
|
|
920
|
+
"system.ops_monitoring.node_metric.total": "Total",
|
|
916
921
|
"system.ops_monitoring.instance_count": "{count} instances",
|
|
917
922
|
"system.ops_monitoring.alert_events": "Alert events",
|
|
918
923
|
"system.ops_monitoring.alert_attention": "Failed requests requiring operations attention",
|
|
@@ -931,5 +936,29 @@
|
|
|
931
936
|
"system.ops_monitoring.kpi.p95_latency": "P95 latency",
|
|
932
937
|
"system.ops_monitoring.kpi.error_rate": "Error rate",
|
|
933
938
|
"system.ops_monitoring.kpi.availability": "Availability",
|
|
934
|
-
"system.ops_monitoring.kpi.current_window": "Current window"
|
|
939
|
+
"system.ops_monitoring.kpi.current_window": "Current window",
|
|
940
|
+
"system.runtime.log.section.sources": "Log sources",
|
|
941
|
+
"system.runtime.log.section.history_files": "History files",
|
|
942
|
+
"system.runtime.log.section.viewer": "Log viewer",
|
|
943
|
+
"system.runtime.log.value.live_console": "Live console",
|
|
944
|
+
"system.runtime.log.value.instance": "Instance {id}",
|
|
945
|
+
"system.runtime.log.value.entry_count": "{count} entries",
|
|
946
|
+
"system.runtime.log.placeholder.search_file": "Search log files",
|
|
947
|
+
"system.runtime.log.placeholder.search_content": "Search log content",
|
|
948
|
+
"system.runtime.log.placeholder.level": "Log level",
|
|
949
|
+
"system.runtime.log.action.resume": "Resume",
|
|
950
|
+
"system.runtime.log.action.pause": "Pause",
|
|
951
|
+
"system.runtime.log.action.auto_scroll": "Auto-scroll",
|
|
952
|
+
"system.runtime.log.action.download": "Download original",
|
|
953
|
+
"system.runtime.log.action.load_older": "Load older logs",
|
|
954
|
+
"system.runtime.log.empty.files": "No history log files",
|
|
955
|
+
"system.runtime.log.empty.entries": "No matching logs",
|
|
956
|
+
"system.runtime.log.status.connecting": "Connecting",
|
|
957
|
+
"system.runtime.log.status.live": "Live",
|
|
958
|
+
"system.runtime.log.status.paused": "Paused",
|
|
959
|
+
"system.runtime.log.status.disconnected": "Disconnected",
|
|
960
|
+
"system.runtime.log.status.loading": "Reading logs",
|
|
961
|
+
"system.runtime.log.message.gap": "The live stream skipped {count} entries. Check the history file for the missing logs.",
|
|
962
|
+
"system.runtime.log.message.file_changed": "The log file rotated or was truncated. Reading again from the end.",
|
|
963
|
+
"system.runtime.log.message.download_started": "Log file download started"
|
|
935
964
|
}
|
|
@@ -248,17 +248,17 @@
|
|
|
248
248
|
"system.base.user.message.confirm_delete_selected": "選択したユーザーを削除してもよろしいですか?",
|
|
249
249
|
"system.base.user.message.delete_success": "ユーザーは正常に削除されました",
|
|
250
250
|
"system.base.user.message.delete_canceled": "ユーザーの削除を取り消しました",
|
|
251
|
-
"system.base.
|
|
252
|
-
"system.base.
|
|
253
|
-
"system.base.
|
|
254
|
-
"system.base.
|
|
255
|
-
"system.base.
|
|
256
|
-
"system.base.
|
|
257
|
-
"system.base.
|
|
258
|
-
"system.base.
|
|
259
|
-
"system.base.
|
|
260
|
-
"system.base.
|
|
261
|
-
"system.base.
|
|
251
|
+
"system.base.i18n.field.i18ns": "多言語翻訳",
|
|
252
|
+
"system.base.i18n.field.name_i18ns": "名前の変換",
|
|
253
|
+
"system.base.i18n.field.value_i18ns": "値の変換",
|
|
254
|
+
"system.base.i18n.placeholder.text": "{language} の翻訳を入力してください",
|
|
255
|
+
"system.base.i18n.action.translate": "翻訳",
|
|
256
|
+
"system.base.i18n.action.batch_translate": "バッチ翻訳",
|
|
257
|
+
"system.base.i18n.message.translate_success": "{language} 翻訳が完了しました",
|
|
258
|
+
"system.base.i18n.message.translate_failed": "{language} 変換に失敗しました",
|
|
259
|
+
"system.base.i18n.message.batch_translate_success": "{count} 言語での翻訳が完了しました",
|
|
260
|
+
"system.base.i18n.message.batch_translate_partial": "{success} 言語の翻訳は完了し、{failed} 言語の翻訳は失敗しました",
|
|
261
|
+
"system.base.i18n.message.batch_translate_failed": "バッチ翻訳に失敗しました",
|
|
262
262
|
"system.base.menu.title.list": "メニューリスト",
|
|
263
263
|
"system.base.menu.action.create": "新しいメニュー",
|
|
264
264
|
"system.base.menu.action.edit": "メニューの変更",
|
|
@@ -626,7 +626,7 @@
|
|
|
626
626
|
"system.code.gen.validation.left_tree_parent_required": "左側のツリーの親フィールドを選択してください",
|
|
627
627
|
"system.code.gen.validation.left_tree_label_required": "左側のツリー表示フィールドを選択してください",
|
|
628
628
|
"system.code.gen.validation.left_tree_value_required": "左側のツリー値フィールドを選択してください",
|
|
629
|
-
"system.code.gen.i18n.field.
|
|
629
|
+
"system.code.gen.i18n.field.i18ns": "非メイン言語の説明",
|
|
630
630
|
"system.code.gen.i18n.action.edit_column": "非主言語フィールドの説明を編集する",
|
|
631
631
|
"system.code.gen.i18n.status.complete": "記入済み",
|
|
632
632
|
"system.code.gen.i18n.status.missing": "がありません",
|
|
@@ -881,7 +881,7 @@
|
|
|
881
881
|
"system.code.gen.preview.message.create_success": "が正常に追加されました",
|
|
882
882
|
"system.code.gen.preview.message.update_success": "は正常に変更されました",
|
|
883
883
|
"system.code.gen.preview.message.delete_success": "削除に成功しました",
|
|
884
|
-
"system.code.gen.preview.message.
|
|
884
|
+
"system.code.gen.preview.message.missing_i18ns": "は正式に生成する前に完了する必要があります: {items}",
|
|
885
885
|
"system.code.gen.preview.value.list_separator": "、",
|
|
886
886
|
"system.project.document.title.navigation": "プロジェクトドキュメントディレクトリ",
|
|
887
887
|
"system.project.document.placeholder.search": "検索項目またはパス",
|
|
@@ -912,7 +912,12 @@
|
|
|
912
912
|
"system.ops_monitoring.error_rate": "エラー率",
|
|
913
913
|
"system.ops_monitoring.status.label": "ステータス",
|
|
914
914
|
"system.ops_monitoring.instance_resources": "インスタンス リソース",
|
|
915
|
-
"system.ops_monitoring.current_recent_sample": "
|
|
915
|
+
"system.ops_monitoring.current_recent_sample": "現在のインスタンスリソースの最新サンプル",
|
|
916
|
+
"system.ops_monitoring.node_metric.heap_memory": "ヒープメモリ",
|
|
917
|
+
"system.ops_monitoring.node_metric.memory": "メモリ",
|
|
918
|
+
"system.ops_monitoring.node_metric.disk": "ディスク",
|
|
919
|
+
"system.ops_monitoring.node_metric.current": "使用中",
|
|
920
|
+
"system.ops_monitoring.node_metric.total": "合計",
|
|
916
921
|
"system.ops_monitoring.instance_count": "{count} インスタンス",
|
|
917
922
|
"system.ops_monitoring.alert_events": "アラームイベント",
|
|
918
923
|
"system.ops_monitoring.alert_attention": "ウィンドウ内でリクエストが失敗しました。運用とメンテナンスの注意が必要なイベントです。",
|
|
@@ -931,5 +936,29 @@
|
|
|
931
936
|
"system.ops_monitoring.kpi.p95_latency": "P95 遅延",
|
|
932
937
|
"system.ops_monitoring.kpi.error_rate": "エラー率",
|
|
933
938
|
"system.ops_monitoring.kpi.availability": "可用性",
|
|
934
|
-
"system.ops_monitoring.kpi.current_window": "現在のウィンドウ"
|
|
939
|
+
"system.ops_monitoring.kpi.current_window": "現在のウィンドウ",
|
|
940
|
+
"system.runtime.log.section.sources": "ログソース",
|
|
941
|
+
"system.runtime.log.section.history_files": "履歴ログ",
|
|
942
|
+
"system.runtime.log.section.viewer": "ログビューアー",
|
|
943
|
+
"system.runtime.log.value.live_console": "リアルタイムコンソール",
|
|
944
|
+
"system.runtime.log.value.instance": "インスタンス {id}",
|
|
945
|
+
"system.runtime.log.value.entry_count": "{count} 件",
|
|
946
|
+
"system.runtime.log.placeholder.search_file": "ログファイルを検索",
|
|
947
|
+
"system.runtime.log.placeholder.search_content": "ログ内容を検索",
|
|
948
|
+
"system.runtime.log.placeholder.level": "ログレベル",
|
|
949
|
+
"system.runtime.log.action.resume": "再開",
|
|
950
|
+
"system.runtime.log.action.pause": "一時停止",
|
|
951
|
+
"system.runtime.log.action.auto_scroll": "自動スクロール",
|
|
952
|
+
"system.runtime.log.action.download": "元のファイルをダウンロード",
|
|
953
|
+
"system.runtime.log.action.load_older": "以前のログを読み込む",
|
|
954
|
+
"system.runtime.log.empty.files": "履歴ログファイルはありません",
|
|
955
|
+
"system.runtime.log.empty.entries": "一致するログはありません",
|
|
956
|
+
"system.runtime.log.status.connecting": "接続中",
|
|
957
|
+
"system.runtime.log.status.live": "リアルタイム",
|
|
958
|
+
"system.runtime.log.status.paused": "一時停止中",
|
|
959
|
+
"system.runtime.log.status.disconnected": "未接続",
|
|
960
|
+
"system.runtime.log.status.loading": "ログを読み込み中",
|
|
961
|
+
"system.runtime.log.message.gap": "リアルタイムログが速すぎるため {count} 件をスキップしました。履歴ファイルで確認してください。",
|
|
962
|
+
"system.runtime.log.message.file_changed": "ログファイルがローテーションまたは切り詰められました。末尾から再読み込みします。",
|
|
963
|
+
"system.runtime.log.message.download_started": "ログファイルのダウンロードを開始しました"
|
|
935
964
|
}
|
|
@@ -248,17 +248,17 @@
|
|
|
248
248
|
"system.base.user.message.confirm_delete_selected": "确认删除已选中的用户吗?",
|
|
249
249
|
"system.base.user.message.delete_success": "删除用户成功",
|
|
250
250
|
"system.base.user.message.delete_canceled": "已取消删除用户",
|
|
251
|
-
"system.base.
|
|
252
|
-
"system.base.
|
|
253
|
-
"system.base.
|
|
254
|
-
"system.base.
|
|
255
|
-
"system.base.
|
|
256
|
-
"system.base.
|
|
257
|
-
"system.base.
|
|
258
|
-
"system.base.
|
|
259
|
-
"system.base.
|
|
260
|
-
"system.base.
|
|
261
|
-
"system.base.
|
|
251
|
+
"system.base.i18n.field.i18ns": "多语言翻译",
|
|
252
|
+
"system.base.i18n.field.name_i18ns": "名称翻译",
|
|
253
|
+
"system.base.i18n.field.value_i18ns": "值翻译",
|
|
254
|
+
"system.base.i18n.placeholder.text": "请输入{language}译文",
|
|
255
|
+
"system.base.i18n.action.translate": "翻译",
|
|
256
|
+
"system.base.i18n.action.batch_translate": "批量翻译",
|
|
257
|
+
"system.base.i18n.message.translate_success": "{language}翻译完成",
|
|
258
|
+
"system.base.i18n.message.translate_failed": "{language}翻译失败",
|
|
259
|
+
"system.base.i18n.message.batch_translate_success": "已完成 {count} 个语言的翻译",
|
|
260
|
+
"system.base.i18n.message.batch_translate_partial": "已完成 {success} 个语言的翻译,{failed} 个语言翻译失败",
|
|
261
|
+
"system.base.i18n.message.batch_translate_failed": "批量翻译失败",
|
|
262
262
|
"system.base.menu.title.list": "菜单列表",
|
|
263
263
|
"system.base.menu.action.create": "新增菜单",
|
|
264
264
|
"system.base.menu.action.edit": "修改菜单",
|
|
@@ -626,7 +626,7 @@
|
|
|
626
626
|
"system.code.gen.validation.left_tree_parent_required": "请选择左树父字段",
|
|
627
627
|
"system.code.gen.validation.left_tree_label_required": "请选择左树显示字段",
|
|
628
628
|
"system.code.gen.validation.left_tree_value_required": "请选择左树值字段",
|
|
629
|
-
"system.code.gen.i18n.field.
|
|
629
|
+
"system.code.gen.i18n.field.i18ns": "非主语言描述",
|
|
630
630
|
"system.code.gen.i18n.action.edit_column": "编辑非主语言字段描述",
|
|
631
631
|
"system.code.gen.i18n.status.complete": "已填写",
|
|
632
632
|
"system.code.gen.i18n.status.missing": "缺失",
|
|
@@ -881,7 +881,7 @@
|
|
|
881
881
|
"system.code.gen.preview.message.create_success": "新增成功",
|
|
882
882
|
"system.code.gen.preview.message.update_success": "修改成功",
|
|
883
883
|
"system.code.gen.preview.message.delete_success": "删除成功",
|
|
884
|
-
"system.code.gen.preview.message.
|
|
884
|
+
"system.code.gen.preview.message.missing_i18ns": "正式生成前还需补齐:{items}",
|
|
885
885
|
"system.code.gen.preview.value.list_separator": "、",
|
|
886
886
|
"system.project.document.title.navigation": "项目文档目录",
|
|
887
887
|
"system.project.document.placeholder.search": "搜索项目或路径",
|
|
@@ -912,7 +912,12 @@
|
|
|
912
912
|
"system.ops_monitoring.error_rate": "错误率",
|
|
913
913
|
"system.ops_monitoring.status.label": "状态",
|
|
914
914
|
"system.ops_monitoring.instance_resources": "实例资源",
|
|
915
|
-
"system.ops_monitoring.current_recent_sample": "
|
|
915
|
+
"system.ops_monitoring.current_recent_sample": "当前实例资源最近采样",
|
|
916
|
+
"system.ops_monitoring.node_metric.heap_memory": "堆内存",
|
|
917
|
+
"system.ops_monitoring.node_metric.memory": "内存",
|
|
918
|
+
"system.ops_monitoring.node_metric.disk": "硬盘",
|
|
919
|
+
"system.ops_monitoring.node_metric.current": "当前",
|
|
920
|
+
"system.ops_monitoring.node_metric.total": "总计",
|
|
916
921
|
"system.ops_monitoring.instance_count": "{count} 个实例",
|
|
917
922
|
"system.ops_monitoring.alert_events": "告警事件",
|
|
918
923
|
"system.ops_monitoring.alert_attention": "窗口内失败请求,需要运维关注的事件",
|
|
@@ -931,5 +936,29 @@
|
|
|
931
936
|
"system.ops_monitoring.kpi.p95_latency": "P95 延迟",
|
|
932
937
|
"system.ops_monitoring.kpi.error_rate": "错误率",
|
|
933
938
|
"system.ops_monitoring.kpi.availability": "可用性",
|
|
934
|
-
"system.ops_monitoring.kpi.current_window": "当前窗口"
|
|
939
|
+
"system.ops_monitoring.kpi.current_window": "当前窗口",
|
|
940
|
+
"system.runtime.log.section.sources": "日志来源",
|
|
941
|
+
"system.runtime.log.section.history_files": "历史日志",
|
|
942
|
+
"system.runtime.log.section.viewer": "日志查看器",
|
|
943
|
+
"system.runtime.log.value.live_console": "实时控制台",
|
|
944
|
+
"system.runtime.log.value.instance": "实例 {id}",
|
|
945
|
+
"system.runtime.log.value.entry_count": "{count} 条",
|
|
946
|
+
"system.runtime.log.placeholder.search_file": "搜索日志文件",
|
|
947
|
+
"system.runtime.log.placeholder.search_content": "搜索日志内容",
|
|
948
|
+
"system.runtime.log.placeholder.level": "日志级别",
|
|
949
|
+
"system.runtime.log.action.resume": "继续",
|
|
950
|
+
"system.runtime.log.action.pause": "暂停",
|
|
951
|
+
"system.runtime.log.action.auto_scroll": "自动滚动",
|
|
952
|
+
"system.runtime.log.action.download": "下载原文件",
|
|
953
|
+
"system.runtime.log.action.load_older": "加载更早日志",
|
|
954
|
+
"system.runtime.log.empty.files": "暂无历史日志文件",
|
|
955
|
+
"system.runtime.log.empty.entries": "暂无匹配日志",
|
|
956
|
+
"system.runtime.log.status.connecting": "连接中",
|
|
957
|
+
"system.runtime.log.status.live": "实时",
|
|
958
|
+
"system.runtime.log.status.paused": "已暂停",
|
|
959
|
+
"system.runtime.log.status.disconnected": "未连接",
|
|
960
|
+
"system.runtime.log.status.loading": "正在读取日志",
|
|
961
|
+
"system.runtime.log.message.gap": "实时日志过快,已跳过 {count} 条,请查询历史文件补全",
|
|
962
|
+
"system.runtime.log.message.file_changed": "日志文件已滚动或截断,已重新从文件尾部读取",
|
|
963
|
+
"system.runtime.log.message.download_started": "日志文件下载已开始"
|
|
935
964
|
}
|