@liujitcn/kratos-admin-system 0.0.28 → 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.
Files changed (37) hide show
  1. package/README.md +1 -1
  2. package/dist/package/declarations/src/api/system/base_i18n.d.ts +5 -5
  3. package/dist/package/declarations/src/components/DynamicI18nCell.vue.d.ts +16 -0
  4. package/dist/package/declarations/src/components/DynamicI18nEditor.vue.d.ts +20 -0
  5. package/dist/package/declarations/src/components/dynamicI18n.d.ts +38 -0
  6. package/dist/package/declarations/src/locales/generated.d.ts +52 -52
  7. package/dist/package/declarations/src/rpc/system/admin/v1/base_config.d.ts +3 -3
  8. package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +4 -4
  9. package/dist/package/declarations/src/rpc/system/admin/v1/base_i18n.d.ts +23 -23
  10. package/dist/package/declarations/src/rpc/system/admin/v1/base_menu.d.ts +2 -2
  11. package/dist/package/declarations/src/rpc/system/admin/v1/code_gen.d.ts +1 -1
  12. package/dist/package/src/api/system/base_i18n.ts +12 -12
  13. package/dist/package/src/components/{DynamicTranslationCell.vue → DynamicI18nCell.vue} +50 -50
  14. package/dist/package/src/components/{DynamicTranslationEditor.vue → DynamicI18nEditor.vue} +45 -45
  15. package/dist/package/src/components/{dynamicTranslation.ts → dynamicI18n.ts} +15 -15
  16. package/dist/package/src/locales/README.md +1 -1
  17. package/dist/package/src/locales/en-US.json +15 -15
  18. package/dist/package/src/locales/ja-JP.json +13 -13
  19. package/dist/package/src/locales/zh-CN.json +13 -13
  20. package/dist/package/src/locales/zh-TW.json +13 -13
  21. package/dist/package/src/rpc/system/admin/v1/base_config.ts +3 -3
  22. package/dist/package/src/rpc/system/admin/v1/base_dict.ts +4 -4
  23. package/dist/package/src/rpc/system/admin/v1/base_i18n.ts +23 -23
  24. package/dist/package/src/rpc/system/admin/v1/base_menu.ts +2 -2
  25. package/dist/package/src/rpc/system/admin/v1/code_gen.ts +1 -1
  26. package/dist/package/src/views/base/config/index.vue +38 -38
  27. package/dist/package/src/views/base/dict/index.vue +23 -23
  28. package/dist/package/src/views/base/dict/item.vue +25 -25
  29. package/dist/package/src/views/base/menu/index.vue +23 -23
  30. package/dist/package/src/views/tool/code-gen/code-preview/index.vue +9 -9
  31. package/dist/package/src/views/tool/code-gen/columns/index.vue +1 -1
  32. package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +8 -8
  33. package/dist/package/src/views/tool/code-gen/table/index.vue +7 -7
  34. package/package.json +2 -2
  35. package/dist/package/declarations/src/components/DynamicTranslationCell.vue.d.ts +0 -16
  36. package/dist/package/declarations/src/components/DynamicTranslationEditor.vue.d.ts +0 -20
  37. package/dist/package/declarations/src/components/dynamicTranslation.d.ts +0 -38
@@ -35,9 +35,9 @@
35
35
  </el-radio-group>
36
36
  </div>
37
37
  </template>
38
- <template #translations>
39
- <DynamicTranslationEditor
40
- v-model="translationValues"
38
+ <template #i18ns>
39
+ <DynamicI18nEditor
40
+ v-model="i18nValues"
41
41
  :source="formData.label"
42
42
  :maxlength="100"
43
43
  />
@@ -69,17 +69,17 @@ import type {
69
69
  PageBaseDictItemRequest
70
70
  } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_dict";
71
71
  import { Status } from "@liujitcn/kratos-admin-system/rpc/common/v1/enum";
72
- import { TranslationTargetType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
72
+ import { I18nTargetType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
73
73
  import { buildPageRequest, normalizeSelectedIds } from "@liujitcn/kratos-admin-core/table";
74
74
  import { t } from "@liujitcn/kratos-admin-core";
75
- import DynamicTranslationEditor from "@liujitcn/kratos-admin-system/components/DynamicTranslationEditor.vue";
76
- import DynamicTranslationCell from "@liujitcn/kratos-admin-system/components/DynamicTranslationCell.vue";
75
+ import DynamicI18nEditor from "@liujitcn/kratos-admin-system/components/DynamicI18nEditor.vue";
76
+ import DynamicI18nCell from "@liujitcn/kratos-admin-system/components/DynamicI18nCell.vue";
77
77
  import {
78
- normalizeDynamicTranslations,
79
- serializeDynamicTranslations,
80
- type DynamicTranslationRecord,
81
- type DynamicTranslationValue
82
- } from "@liujitcn/kratos-admin-system/components/dynamicTranslation";
78
+ normalizeDynamicI18ns,
79
+ serializeDynamicI18ns,
80
+ type DynamicI18nRecord,
81
+ type DynamicI18nValue
82
+ } from "@liujitcn/kratos-admin-system/components/dynamicI18n";
83
83
 
84
84
  defineOptions({
85
85
  name: "BaseDictItem",
@@ -90,7 +90,7 @@ const route = useRoute();
90
90
  const { BUTTONS } = useAuthButtons();
91
91
  const proTable = ref<ProTableInstance>();
92
92
  const formDialogRef = ref<InstanceType<typeof FormDialog>>();
93
- const translationValues = ref<DynamicTranslationValue[]>(normalizeDynamicTranslations(undefined, "label"));
93
+ const i18nValues = ref<DynamicI18nValue[]>(normalizeDynamicI18ns(undefined, "label"));
94
94
 
95
95
  const dictId = ref(Number(route.query.dictId ?? 0));
96
96
 
@@ -109,7 +109,7 @@ const formData = reactive<BaseDictItemForm>({
109
109
  /** 字典项标签 */
110
110
  label: "",
111
111
  /** 非主语言翻译 */
112
- translations: [],
112
+ i18ns: [],
113
113
  /** 标签类型 */
114
114
  tag_type: "",
115
115
  /** 排序 */
@@ -158,10 +158,10 @@ const formFields = computed<ProFormField[]>(() => [
158
158
  props: { placeholder: t("system.base.dict.item.placeholder.value") }
159
159
  },
160
160
  {
161
- prop: "translations",
162
- label: t("system.base.translation.field.translations"),
161
+ prop: "i18ns",
162
+ label: t("system.base.i18n.field.i18ns"),
163
163
  component: "slot",
164
- slotName: "translations",
164
+ slotName: "i18ns",
165
165
  colSpan: 24
166
166
  },
167
167
  {
@@ -202,11 +202,11 @@ function renderTagTypeCell(scope: RenderScope<BaseDictItem>) {
202
202
  /** 渲染字典项标签翻译预览,并复用当前页面的编辑弹窗。 */
203
203
  function renderDictItemLabelCell(scope: RenderScope<BaseDictItem>) {
204
204
  const row = scope.row;
205
- return h(DynamicTranslationCell, {
205
+ return h(DynamicI18nCell, {
206
206
  source: row.label,
207
- targetType: TranslationTargetType.TRANSLATION_TARGET_TYPE_BASE_DICT_ITEM,
207
+ targetType: I18nTargetType.I18N_TARGET_TYPE_BASE_DICT_ITEM,
208
208
  targetId: row.id,
209
- translations: row.translations
209
+ i18ns: row.i18ns
210
210
  });
211
211
  }
212
212
 
@@ -330,7 +330,7 @@ async function handleOpenDialog(dictItemId?: number) {
330
330
 
331
331
  const data = await defBaseDictService.GetBaseDictItem({ id: dictItemId });
332
332
  Object.assign(formData, data);
333
- translationValues.value = normalizeDynamicTranslations(data.translations as DynamicTranslationRecord[], "label");
333
+ i18nValues.value = normalizeDynamicI18ns(data.i18ns as DynamicI18nRecord[], "label");
334
334
  }
335
335
 
336
336
  /**
@@ -351,11 +351,11 @@ function resetForm() {
351
351
  formData.dict_id = dictId.value;
352
352
  formData.value = "";
353
353
  formData.label = "";
354
- formData.translations = [];
354
+ formData.i18ns = [];
355
355
  formData.tag_type = "";
356
356
  formData.sort = 1;
357
357
  formData.status = Status.STATUS_ENABLE;
358
- translationValues.value = normalizeDynamicTranslations(undefined, "label");
358
+ i18nValues.value = normalizeDynamicI18ns(undefined, "label");
359
359
  }
360
360
 
361
361
  /**
@@ -367,9 +367,9 @@ function handleSubmit() {
367
367
 
368
368
  formData.dict_id = dictId.value;
369
369
  const submitData = JSON.parse(JSON.stringify(formData)) as BaseDictItemForm;
370
- submitData.translations = serializeDynamicTranslations(
371
- translationValues.value,
372
- TranslationTargetType.TRANSLATION_TARGET_TYPE_BASE_DICT_ITEM,
370
+ submitData.i18ns = serializeDynamicI18ns(
371
+ i18nValues.value,
372
+ I18nTargetType.I18N_TARGET_TYPE_BASE_DICT_ITEM,
373
373
  submitData.id
374
374
  );
375
375
  const request = submitData.id
@@ -31,9 +31,9 @@
31
31
  <SelectIcon v-model:icon-value="menuIconValue" :placeholder="t('system.base.menu.placeholder.icon')" />
32
32
  </template>
33
33
 
34
- <template #translations>
35
- <DynamicTranslationEditor
36
- v-model="translationValues"
34
+ <template #i18ns>
35
+ <DynamicI18nEditor
36
+ v-model="i18nValues"
37
37
  :source="formData.meta.title"
38
38
  :maxlength="100"
39
39
  />
@@ -79,17 +79,17 @@ import type {
79
79
  } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_menu";
80
80
  import { Status } from "@liujitcn/kratos-admin-system/rpc/common/v1/enum";
81
81
  import { BaseMenuType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/common";
82
- import { TranslationTargetType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
82
+ import { I18nTargetType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
83
83
  import { normalizeSelectedIds } from "@liujitcn/kratos-admin-core/table";
84
84
  import { t } from "@liujitcn/kratos-admin-core";
85
- import DynamicTranslationEditor from "@liujitcn/kratos-admin-system/components/DynamicTranslationEditor.vue";
86
- import DynamicTranslationCell from "@liujitcn/kratos-admin-system/components/DynamicTranslationCell.vue";
85
+ import DynamicI18nEditor from "@liujitcn/kratos-admin-system/components/DynamicI18nEditor.vue";
86
+ import DynamicI18nCell from "@liujitcn/kratos-admin-system/components/DynamicI18nCell.vue";
87
87
  import {
88
- normalizeDynamicTranslations,
89
- serializeDynamicTranslations,
90
- type DynamicTranslationRecord,
91
- type DynamicTranslationValue
92
- } from "@liujitcn/kratos-admin-system/components/dynamicTranslation";
88
+ normalizeDynamicI18ns,
89
+ serializeDynamicI18ns,
90
+ type DynamicI18nRecord,
91
+ type DynamicI18nValue
92
+ } from "@liujitcn/kratos-admin-system/components/dynamicI18n";
93
93
 
94
94
  defineOptions({
95
95
  name: "BaseMenu",
@@ -113,7 +113,7 @@ const menuOptions = ref<ProFormOption[]>([]);
113
113
  const parentMenuTypeMap = ref(new Map<number, BaseMenuType>());
114
114
  const appMenuIds = ref(new Set<number>([APP_MENU_ROOT_ID]));
115
115
  const apiList = ref<BaseApi[]>([]);
116
- const translationValues = ref<DynamicTranslationValue[]>(normalizeDynamicTranslations(undefined, "title"));
116
+ const i18nValues = ref<DynamicI18nValue[]>(normalizeDynamicI18ns(undefined, "title"));
117
117
 
118
118
  const dialog = reactive({
119
119
  editing: false,
@@ -159,7 +159,7 @@ function createDefaultMenuForm(): MenuFormState {
159
159
  redirect: "",
160
160
  meta: createDefaultMenuMeta(),
161
161
  api: [],
162
- translations: [],
162
+ i18ns: [],
163
163
  sort: 1,
164
164
  status: Status.STATUS_ENABLE
165
165
  };
@@ -294,11 +294,11 @@ function renderHiddenCell(scope: RenderScope<BaseMenu>) {
294
294
  /** 渲染菜单标题翻译预览,并复用当前页面的编辑弹窗。 */
295
295
  function renderMenuTitleCell(scope: RenderScope<BaseMenu>) {
296
296
  const row = scope.row;
297
- return h(DynamicTranslationCell, {
297
+ return h(DynamicI18nCell, {
298
298
  source: row.meta?.title ?? "",
299
- targetType: TranslationTargetType.TRANSLATION_TARGET_TYPE_BASE_MENU,
299
+ targetType: I18nTargetType.I18N_TARGET_TYPE_BASE_MENU,
300
300
  targetId: row.id,
301
- translations: row.translations
301
+ i18ns: row.i18ns
302
302
  });
303
303
  }
304
304
 
@@ -468,10 +468,10 @@ const formFields = computed<ProFormField[]>(() => [
468
468
  })
469
469
  },
470
470
  {
471
- prop: "translations",
472
- label: t("system.base.translation.field.translations"),
471
+ prop: "i18ns",
472
+ label: t("system.base.i18n.field.i18ns"),
473
473
  component: "slot",
474
- slotName: "translations",
474
+ slotName: "i18ns",
475
475
  colSpan: 24
476
476
  },
477
477
  {
@@ -999,9 +999,9 @@ function buildMenuOptions(menuList: BaseMenu[] = []) {
999
999
  /** 根据菜单类型清理无效字段,避免提交脏数据。 */
1000
1000
  function buildSubmitPayload(): BaseMenuForm {
1001
1001
  const payload = normalizeMenuForm(formData);
1002
- payload.translations = serializeDynamicTranslations(
1003
- translationValues.value,
1004
- TranslationTargetType.TRANSLATION_TARGET_TYPE_BASE_MENU,
1002
+ payload.i18ns = serializeDynamicI18ns(
1003
+ i18nValues.value,
1004
+ I18nTargetType.I18N_TARGET_TYPE_BASE_MENU,
1005
1005
  payload.id
1006
1006
  );
1007
1007
  // 一级菜单在表单中保持空白,提交时仍按接口约定传回根节点标识。
@@ -1145,7 +1145,7 @@ function resetForm(data?: Partial<BaseMenuForm>) {
1145
1145
  formDialogRef.value?.resetFields();
1146
1146
  formDialogRef.value?.clearValidate();
1147
1147
  Object.assign(formData, normalizeMenuForm(data));
1148
- translationValues.value = normalizeDynamicTranslations(data?.translations as DynamicTranslationRecord[] | undefined, "title");
1148
+ i18nValues.value = normalizeDynamicI18ns(data?.i18ns as DynamicI18nRecord[] | undefined, "title");
1149
1149
  }
1150
1150
 
1151
1151
  /** 提交菜单表单,并在成功后关闭弹窗、刷新表格。 */
@@ -60,7 +60,7 @@ const table = ref<CodeGenTableForm>();
60
60
  const files = ref<CodeGenPreviewFile[]>([]);
61
61
  const loading = ref(false);
62
62
  const previewError = ref("");
63
- const missingTranslations = ref<string[]>([]);
63
+ const missingI18ns = ref<string[]>([]);
64
64
  const progressTaskId = ref(typeof window === "undefined" ? "" : (window.sessionStorage.getItem(codeGenTaskStorageKey) ?? ""));
65
65
  const progressDialogVisible = ref(
66
66
  !!progressTaskId.value &&
@@ -94,7 +94,7 @@ async function loadCodePreview() {
94
94
  table.value = undefined;
95
95
  files.value = [];
96
96
  previewError.value = "";
97
- missingTranslations.value = [];
97
+ missingI18ns.value = [];
98
98
  if (!tableId.value) return;
99
99
  loading.value = true;
100
100
  try {
@@ -103,10 +103,10 @@ async function loadCodePreview() {
103
103
  try {
104
104
  const preview = await defCodeGenService.PreviewCodeGen({ table_id: tableId.value, output_paths: undefined });
105
105
  files.value = preview.files ?? [];
106
- missingTranslations.value = preview.missing_translations ?? [];
107
- if (missingTranslations.value.length) {
108
- previewError.value = t("system.code.gen.preview.message.missing_translations", {
109
- items: missingTranslations.value.join(t("system.code.gen.preview.value.list_separator"))
106
+ missingI18ns.value = preview.missing_i18ns ?? [];
107
+ if (missingI18ns.value.length) {
108
+ previewError.value = t("system.code.gen.preview.message.missing_i18ns", {
109
+ items: missingI18ns.value.join(t("system.code.gen.preview.value.list_separator"))
110
110
  });
111
111
  }
112
112
  if (!files.value.length && !previewError.value) previewError.value = t("system.code.gen.preview.message.no_preview_files");
@@ -134,11 +134,11 @@ async function handleGenerate() {
134
134
  ElMessage.warning(t("system.code.gen.table.message.disabled", { name: table.value.name }));
135
135
  return;
136
136
  }
137
- if (missingTranslations.value.length) {
137
+ if (missingI18ns.value.length) {
138
138
  try {
139
139
  await ElMessageBox.alert(
140
- t("system.code.gen.preview.message.missing_translations", {
141
- items: missingTranslations.value.join(t("system.code.gen.preview.value.list_separator"))
140
+ t("system.code.gen.preview.message.missing_i18ns", {
141
+ items: missingI18ns.value.join(t("system.code.gen.preview.value.list_separator"))
142
142
  }),
143
143
  t("common.title.warning"),
144
144
  {
@@ -557,7 +557,7 @@ import type {
557
557
  } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/code_gen_column";
558
558
  import type { CodeGenDatabaseTable, CodeGenTableForm } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/code_gen_table";
559
559
  import CodeGenLocaleEditor from "../components/CodeGenLocaleEditor.vue";
560
- import { getEditableLanguageOptions } from "@liujitcn/kratos-admin-system/components/dynamicTranslation";
560
+ import { getEditableLanguageOptions } from "@liujitcn/kratos-admin-system/components/dynamicI18n";
561
561
  import {
562
562
  copyCodeGenOptionToEmptyMatches,
563
563
  copyFirstMatchingCodeGenOption,
@@ -35,7 +35,7 @@
35
35
  :disabled="!canTranslate(locale.value, 'comment', sourceComment)"
36
36
  @click="handleTranslate(locale.value, 'comment', sourceComment, locale.label)"
37
37
  >
38
- {{ t("system.base.translation.action.translate") }}
38
+ {{ t("system.base.i18n.action.translate") }}
39
39
  </el-button>
40
40
  </div>
41
41
  <div v-if="showLeftTreeComment" class="code-gen-locale-editor__control">
@@ -56,7 +56,7 @@
56
56
  :disabled="!canTranslate(locale.value, 'left_tree_comment', sourceLeftTreeComment)"
57
57
  @click="handleTranslate(locale.value, 'left_tree_comment', sourceLeftTreeComment, locale.label)"
58
58
  >
59
- {{ t("system.base.translation.action.translate") }}
59
+ {{ t("system.base.i18n.action.translate") }}
60
60
  </el-button>
61
61
  </div>
62
62
  </div>
@@ -140,13 +140,13 @@ async function handleTranslate(locale: string, field: keyof CodeGenLocaleConfig,
140
140
  if (!canTranslate(locale, field, source)) return;
141
141
  translatingField.value = `${locale}:${field}`;
142
142
  try {
143
- const response = await defBaseI18nService.DraftBaseTranslation({ source, locale });
144
- const translation = response.translations.find(item => item.locale === locale)?.translation;
145
- if (!translation) throw new Error("translation not found");
146
- updateLocale(locale, field, translation);
147
- ElMessage.success(t("system.base.translation.message.translate_success", { language }));
143
+ const response = await defBaseI18nService.DraftBaseI18n({ source, locale });
144
+ const i18n = response.i18ns.find(item => item.locale === locale)?.i18n;
145
+ if (!i18n) throw new Error("i18n not found");
146
+ updateLocale(locale, field, i18n);
147
+ ElMessage.success(t("system.base.i18n.message.translate_success", { language }));
148
148
  } catch {
149
- ElMessage.error(t("system.base.translation.message.translate_failed", { language }));
149
+ ElMessage.error(t("system.base.i18n.message.translate_failed", { language }));
150
150
  } finally {
151
151
  translatingField.value = "";
152
152
  }
@@ -212,7 +212,7 @@ const formFields = computed<ProFormField[]>(() => [
212
212
  },
213
213
  {
214
214
  prop: "i18n_config",
215
- label: t("system.code.gen.i18n.field.translations"),
215
+ label: t("system.code.gen.i18n.field.i18ns"),
216
216
  component: "slot",
217
217
  slotName: "tableI18nConfig",
218
218
  colSpan: 24,
@@ -589,7 +589,7 @@ async function handleGenerate(selected: CodeGenGenerateTarget) {
589
589
  return;
590
590
  }
591
591
  generating.value = true;
592
- let missingTranslations: string[] = [];
592
+ let missingI18ns: string[] = [];
593
593
  try {
594
594
  const previewEntries = await Promise.all(
595
595
  tables.map(async table => ({
@@ -597,17 +597,17 @@ async function handleGenerate(selected: CodeGenGenerateTarget) {
597
597
  preview: await defCodeGenService.PreviewCodeGen({ table_id: table.id, output_paths: undefined })
598
598
  }))
599
599
  );
600
- missingTranslations = previewEntries.flatMap(({ table, preview }) =>
601
- (preview.missing_translations ?? []).map(item => (tables.length === 1 ? item : `${table.name}: ${item}`))
600
+ missingI18ns = previewEntries.flatMap(({ table, preview }) =>
601
+ (preview.missing_i18ns ?? []).map(item => (tables.length === 1 ? item : `${table.name}: ${item}`))
602
602
  );
603
603
  } finally {
604
604
  generating.value = false;
605
605
  }
606
- if (missingTranslations.length) {
606
+ if (missingI18ns.length) {
607
607
  try {
608
608
  await ElMessageBox.alert(
609
- t("system.code.gen.preview.message.missing_translations", {
610
- items: missingTranslations.join(t("system.code.gen.preview.value.list_separator"))
609
+ t("system.code.gen.preview.message.missing_i18ns", {
610
+ items: missingI18ns.join(t("system.code.gen.preview.value.list_separator"))
611
611
  }),
612
612
  t("common.title.warning"),
613
613
  {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@liujitcn/kratos-admin-system",
3
3
  "private": false,
4
- "version": "0.0.28",
4
+ "version": "0.0.29",
5
5
  "type": "module",
6
6
  "description": "kratos-admin system management module",
7
7
  "license": "MIT",
@@ -15,7 +15,7 @@
15
15
  "sortablejs": "^1.15.2",
16
16
  "swagger-ui-dist": "^5.32.9",
17
17
  "vue-element-plus-x": "^2.0.3",
18
- "@liujitcn/kratos-admin-core": "0.0.28"
18
+ "@liujitcn/kratos-admin-core": "0.0.29"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "@element-plus/icons-vue": "^2.3.1",
@@ -1,16 +0,0 @@
1
- import type { BaseI18n } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
2
- import { TranslationTargetType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
3
- /** DynamicTranslationCellProps 动态翻译列表单元格属性。 */
4
- interface DynamicTranslationCellProps {
5
- /** 资源源文。 */
6
- source: string;
7
- /** 统一翻译表目标类型。 */
8
- targetType?: TranslationTargetType;
9
- /** 目标资源编号。 */
10
- targetId?: number;
11
- /** 资源列表返回的非主语言翻译。 */
12
- translations?: BaseI18n[];
13
- }
14
- declare const __VLS_export: import("vue").DefineComponent<DynamicTranslationCellProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DynamicTranslationCellProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
- declare const _default: typeof __VLS_export;
16
- export default _default;
@@ -1,20 +0,0 @@
1
- import { type DynamicTranslationValue } from "./dynamicTranslation";
2
- /** DynamicTranslationEditorProps 动态翻译编辑器属性。 */
3
- interface DynamicTranslationEditorProps {
4
- modelValue: DynamicTranslationValue[];
5
- /** 当前语言源文本。 */
6
- source?: string;
7
- maxlength?: number;
8
- multiline?: boolean;
9
- }
10
- declare const __VLS_export: import("vue").DefineComponent<DynamicTranslationEditorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
- "update:modelValue": (value: DynamicTranslationValue[]) => any;
12
- }, string, import("vue").PublicProps, Readonly<DynamicTranslationEditorProps> & Readonly<{
13
- "onUpdate:modelValue"?: ((value: DynamicTranslationValue[]) => any) | undefined;
14
- }>, {
15
- source: string;
16
- maxlength: number;
17
- multiline: boolean;
18
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
- declare const _default: typeof __VLS_export;
20
- export default _default;
@@ -1,38 +0,0 @@
1
- import type { TranslationTargetType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
2
- /** DynamicTranslationValue 动态资源单语言翻译编辑状态。 */
3
- export interface DynamicTranslationValue {
4
- /** 语言代码。 */
5
- locale: string;
6
- text: string;
7
- id: number;
8
- }
9
- /** DynamicTranslationRecord 描述三类动态资源翻译共有字段。 */
10
- export interface DynamicTranslationRecord extends Omit<DynamicTranslationValue, "text"> {
11
- target_type?: TranslationTargetType;
12
- target_id?: number;
13
- name?: string;
14
- /** 兼容旧接口缓存中的字段名。 */
15
- title?: string;
16
- label?: string;
17
- }
18
- /** DynamicLanguageOption 动态翻译编辑器显示的语言选项。 */
19
- export interface DynamicLanguageOption {
20
- /** 语言代码。 */
21
- value: string;
22
- /** 语言显示名称。 */
23
- label: string;
24
- }
25
- /** 返回语言管理中启用且非主语言的翻译语言选项。 */
26
- export declare function getEditableLanguageOptions(): DynamicLanguageOption[];
27
- /** 返回语言管理中的语言显示名称。 */
28
- export declare function getLanguageLabel(locale: string): string;
29
- /** normalizeDynamicTranslations 将后端翻译记录补齐为全部非主语言编辑状态。 */
30
- export declare function normalizeDynamicTranslations(records: DynamicTranslationRecord[] | undefined, _textField: "title" | "name" | "label", locales?: string[]): DynamicTranslationValue[];
31
- /** serializeDynamicTranslations 将编辑状态转换回后端资源翻译结构。 */
32
- export declare function serializeDynamicTranslations(values: DynamicTranslationValue[], targetType: TranslationTargetType, targetId: number): Array<{
33
- id: number;
34
- target_type: TranslationTargetType;
35
- target_id: number;
36
- locale: string;
37
- name: string;
38
- }>;