diff --git a/static/src/app/methods/ui/permission.ts b/static/src/app/methods/ui/permission.ts index 3feabad8..25145a51 100644 --- a/static/src/app/methods/ui/permission.ts +++ b/static/src/app/methods/ui/permission.ts @@ -51,13 +51,13 @@ export const permissionMethods = { void currentLocale.value; const options = Array.isArray(this.permissionModeOptions) ? this.permissionModeOptions : []; const hit = options.find((item) => item.value === mode); - return hit ? hit.label : mode || t('appUi.unknown'); + return hit ? t(hit.labelKey) : mode || t('appUi.unknown'); }, getExecutionModeLabel(mode) { void currentLocale.value; const options = Array.isArray(this.executionModeOptions) ? this.executionModeOptions : []; const hit = options.find((item) => item.value === mode); - return hit ? hit.label : mode || t('appUi.unknown'); + return hit ? t(hit.labelKey) : mode || t('appUi.unknown'); }, async changePermissionMode(mode) { const target = String(mode || '') diff --git a/static/src/app/methods/ui/workMode.ts b/static/src/app/methods/ui/workMode.ts index c4cd88dc..2515db39 100644 --- a/static/src/app/methods/ui/workMode.ts +++ b/static/src/app/methods/ui/workMode.ts @@ -11,7 +11,7 @@ export const workModeMethods = { void currentLocale.value; const options = Array.isArray(this.workModeOptions) ? this.workModeOptions : []; const hit = options.find((item) => item.value === mode); - return hit ? hit.label : mode || t('appUi.unknown'); + return hit ? t(hit.labelKey) : mode || t('appUi.unknown'); }, async fetchWorkMode() { try { diff --git a/static/src/app/state.ts b/static/src/app/state.ts index fb20b0d4..8e6ec6cd 100644 --- a/static/src/app/state.ts +++ b/static/src/app/state.ts @@ -196,13 +196,13 @@ export function dataState() { networkPermissionOptions: [ { value: 'restricted', - label: t('appUi.networkRestricted'), - description: t('appCore.networkRestrictedDesc') + labelKey: 'appUi.networkRestricted', + descriptionKey: 'appCore.networkRestrictedDesc' }, { value: 'full', - label: t('appUi.networkFull'), - description: t('appCore.networkFullDesc') + labelKey: 'appUi.networkFull', + descriptionKey: 'appCore.networkFullDesc' } ], workModeMenuOpen: false, @@ -210,18 +210,18 @@ export function dataState() { workModeOptions: [ { value: 'plan', - label: t('appUi.workModePlan'), - description: t('appCore.workModePlanDesc') + labelKey: 'appUi.workModePlan', + descriptionKey: 'appCore.workModePlanDesc' }, { value: 'ask', - label: t('appUi.workModeAsk'), - description: t('appCore.workModeAskDesc') + labelKey: 'appUi.workModeAsk', + descriptionKey: 'appCore.workModeAskDesc' }, { value: 'execute', - label: t('appUi.workModeExecute'), - description: t('appCore.workModeExecuteDesc') + labelKey: 'appUi.workModeExecute', + descriptionKey: 'appCore.workModeExecuteDesc' } ], pathAuthorizationDialogOpen: false, @@ -256,35 +256,35 @@ export function dataState() { permissionModeOptions: [ { value: 'readonly', - label: t('personalization.permissionReadonly'), - description: t('appCore.permissionReadonlyDesc') + labelKey: 'personalization.permissionReadonly', + descriptionKey: 'appCore.permissionReadonlyDesc' }, { value: 'approval', - label: t('appCore.permissionApproval'), - description: t('appCore.permissionApprovalDesc') + labelKey: 'appCore.permissionApproval', + descriptionKey: 'appCore.permissionApprovalDesc' }, { value: 'auto_approval', - label: t('appCore.permissionAutoApproval'), - description: t('appCore.permissionAutoApprovalDesc') + labelKey: 'appCore.permissionAutoApproval', + descriptionKey: 'appCore.permissionAutoApprovalDesc' }, { value: 'unrestricted', - label: t('appCore.permissionUnrestricted'), - description: t('appCore.permissionUnrestrictedDesc') + labelKey: 'appCore.permissionUnrestricted', + descriptionKey: 'appCore.permissionUnrestrictedDesc' } ], executionModeOptions: [ { value: 'sandbox', - label: t('input.executionSandbox'), - description: t('appCore.executionSandboxDesc') + labelKey: 'input.executionSandbox', + descriptionKey: 'appCore.executionSandboxDesc' }, { value: 'direct', - label: t('input.executionFullAccess'), - description: t('appCore.executionDirectDesc') + labelKey: 'input.executionFullAccess', + descriptionKey: 'appCore.executionDirectDesc' } ], pendingToolApprovals: [], diff --git a/static/src/components/input/InputComposer.vue b/static/src/components/input/InputComposer.vue index d44db8e2..c21c50ba 100644 --- a/static/src/components/input/InputComposer.vue +++ b/static/src/components/input/InputComposer.vue @@ -375,8 +375,8 @@ :class="{ 'is-active': option.value === currentWorkMode }" @click.stop="$emit('change-work-mode', option.value)" > - {{ option.label }} - {{ option.description }} + {{ $t(option.labelKey) }} + {{ $t(option.descriptionKey) }} @@ -546,8 +546,8 @@ :disabled="permissionLockedByPlan" @click="$emit('change-permission-mode', option.value)" > - {{ option.label }} - {{ option.description }} + {{ $t(option.labelKey) }} + {{ $t(option.descriptionKey) }}
{{ option.label }}{{ $t(option.labelKey) }} - {{ option.description }} + {{ $t(option.descriptionKey) }}
{{ option.label }}{{ $t(option.labelKey) }} - {{ option.description }} + {{ $t(option.descriptionKey) }}
@@ -756,13 +756,13 @@ const props = defineProps<{ blockConversationReview?: boolean; currentPermissionMode: 'readonly' | 'approval' | 'auto_approval' | 'unrestricted'; permissionMenuOpen: boolean; - permissionOptions: Array<{ value: string; label: string; description: string }>; + permissionOptions: Array<{ value: string; labelKey: string; descriptionKey: string }>; executionModeEnabled?: boolean; currentExecutionMode?: 'sandbox' | 'direct'; - executionModeOptions?: Array<{ value: string; label: string; description: string }>; + executionModeOptions?: Array<{ value: string; labelKey: string; descriptionKey: string }>; networkPermissionEnabled?: boolean; currentNetworkPermission?: 'restricted' | 'full'; - networkPermissionOptions?: Array<{ value: string; label: string; description: string }>; + networkPermissionOptions?: Array<{ value: string; labelKey: string; descriptionKey: string }>; currentContextTokens: number; versioningEnabled?: boolean; runtimeQueuedMessages?: Array<{ id: string; text: string }>; @@ -790,7 +790,7 @@ const props = defineProps<{ /** 运行模式菜单是否展开 */ workModeMenuOpen?: boolean; /** 运行模式选项 */ - workModeOptions?: Array<{ value: string; label: string; description: string }>; + workModeOptions?: Array<{ value: string; labelKey: string; descriptionKey: string }>; /** host/docker 项目模式下的工作区列表(/菜单「切换工作区」数据源) */ hostWorkspaces?: Array<{ workspace_id: string; @@ -3320,10 +3320,11 @@ const triggerQuickUpload = () => { }; const currentPermissionLabel = computed(() => { + void currentLocale.value; const matched = (props.permissionOptions || []).find( (item) => item.value === props.currentPermissionMode ); - return matched ? matched.label : props.currentPermissionMode; + return matched ? t(matched.labelKey) : props.currentPermissionMode; }); /** 对话类型选择器:选项定义(响应式:随语言切换刷新) */ @@ -3364,7 +3365,7 @@ const workModeLabel = computed(() => { const matched = (props.workModeOptions || []).find( (item) => item.value === props.currentWorkMode ); - return matched ? matched.label : props.currentWorkMode || t('input.workModePlanFallback'); + return matched ? t(matched.labelKey) : props.currentWorkMode || t('input.workModePlanFallback'); }); /** 计划模式下权限被锁定为只读(UI 禁用 + 后端强制) */