feat(i18n): add internationalization support for /approval-mode command

This commit is contained in:
pomelo-nwu
2025-11-18 10:24:52 +08:00
parent 1dce30b39f
commit 47083e810a
4 changed files with 39 additions and 10 deletions

View File

@@ -203,6 +203,7 @@ export default {
// ============================================================================ // ============================================================================
// Commands - Approval Mode // Commands - Approval Mode
// ============================================================================ // ============================================================================
'Approval Mode': 'Approval Mode',
'Current approval mode: {{mode}}': 'Current approval mode: {{mode}}', 'Current approval mode: {{mode}}': 'Current approval mode: {{mode}}',
'Available approval modes:': 'Available approval modes:', 'Available approval modes:': 'Available approval modes:',
'Approval mode changed to: {{mode}}': 'Approval mode changed to: {{mode}}', 'Approval mode changed to: {{mode}}': 'Approval mode changed to: {{mode}}',
@@ -236,6 +237,16 @@ export default {
'Persist for this project/workspace': 'Persist for this project/workspace', 'Persist for this project/workspace': 'Persist for this project/workspace',
'Persist for this user on this machine': 'Persist for this user on this machine':
'Persist for this user on this machine', 'Persist for this user on this machine',
'Analyze only, do not modify files or execute commands':
'Analyze only, do not modify files or execute commands',
'Require approval for file edits or shell commands':
'Require approval for file edits or shell commands',
'Automatically approve file edits': 'Automatically approve file edits',
'Automatically approve all tools': 'Automatically approve all tools',
'Workspace approval mode exists and takes priority. User-level change will have no effect.':
'Workspace approval mode exists and takes priority. User-level change will have no effect.',
'(Use Enter to select, Tab to change focus)':
'(Use Enter to select, Tab to change focus)',
// ============================================================================ // ============================================================================
// Commands - Memory // Commands - Memory

View File

@@ -193,6 +193,7 @@ export default {
// ============================================================================ // ============================================================================
// Commands - Approval Mode // Commands - Approval Mode
// ============================================================================ // ============================================================================
'Approval Mode': '审批模式',
'Current approval mode: {{mode}}': '当前审批模式:{{mode}}', 'Current approval mode: {{mode}}': '当前审批模式:{{mode}}',
'Available approval modes:': '可用的审批模式:', 'Available approval modes:': '可用的审批模式:',
'Approval mode changed to: {{mode}}': '审批模式已更改为:{{mode}}', 'Approval mode changed to: {{mode}}': '审批模式已更改为:{{mode}}',
@@ -221,6 +222,16 @@ export default {
'Apply to current session only (temporary)': '仅应用于当前会话(临时)', 'Apply to current session only (temporary)': '仅应用于当前会话(临时)',
'Persist for this project/workspace': '持久化到此项目/工作区', 'Persist for this project/workspace': '持久化到此项目/工作区',
'Persist for this user on this machine': '持久化到此机器上的此用户', 'Persist for this user on this machine': '持久化到此机器上的此用户',
'Analyze only, do not modify files or execute commands':
'仅分析,不修改文件或执行命令',
'Require approval for file edits or shell commands':
'需要批准文件编辑或 shell 命令',
'Automatically approve file edits': '自动批准文件编辑',
'Automatically approve all tools': '自动批准所有工具',
'Workspace approval mode exists and takes priority. User-level change will have no effect.':
'工作区审批模式已存在并具有优先级。用户级别的更改将无效。',
'(Use Enter to select, Tab to change focus)':
'(使用 Enter 选择Tab 切换焦点)',
// ============================================================================ // ============================================================================
// Commands - Memory // Commands - Memory

View File

@@ -10,10 +10,13 @@ import type {
OpenDialogActionReturn, OpenDialogActionReturn,
} from './types.js'; } from './types.js';
import { CommandKind } from './types.js'; import { CommandKind } from './types.js';
import { t } from '../../i18n/index.js';
export const approvalModeCommand: SlashCommand = { export const approvalModeCommand: SlashCommand = {
name: 'approval-mode', name: 'approval-mode',
description: 'View or change the approval mode for tool usage', get description() {
return t('View or change the approval mode for tool usage');
},
kind: CommandKind.BUILT_IN, kind: CommandKind.BUILT_IN,
action: async ( action: async (
_context: CommandContext, _context: CommandContext,

View File

@@ -15,6 +15,7 @@ import { SettingScope } from '../../config/settings.js';
import { getScopeMessageForSetting } from '../../utils/dialogScopeUtils.js'; import { getScopeMessageForSetting } from '../../utils/dialogScopeUtils.js';
import { useKeypress } from '../hooks/useKeypress.js'; import { useKeypress } from '../hooks/useKeypress.js';
import { ScopeSelector } from './shared/ScopeSelector.js'; import { ScopeSelector } from './shared/ScopeSelector.js';
import { t } from '../../i18n/index.js';
interface ApprovalModeDialogProps { interface ApprovalModeDialogProps {
/** Callback function when an approval mode is selected */ /** Callback function when an approval mode is selected */
@@ -33,15 +34,15 @@ interface ApprovalModeDialogProps {
const formatModeDescription = (mode: ApprovalMode): string => { const formatModeDescription = (mode: ApprovalMode): string => {
switch (mode) { switch (mode) {
case ApprovalMode.PLAN: case ApprovalMode.PLAN:
return 'Analyze only, do not modify files or execute commands'; return t('Analyze only, do not modify files or execute commands');
case ApprovalMode.DEFAULT: case ApprovalMode.DEFAULT:
return 'Require approval for file edits or shell commands'; return t('Require approval for file edits or shell commands');
case ApprovalMode.AUTO_EDIT: case ApprovalMode.AUTO_EDIT:
return 'Automatically approve file edits'; return t('Automatically approve file edits');
case ApprovalMode.YOLO: case ApprovalMode.YOLO:
return 'Automatically approve all tools'; return t('Automatically approve all tools');
default: default:
return `${mode} mode`; return t('{{mode}} mode', { mode });
} }
}; };
@@ -134,7 +135,8 @@ export function ApprovalModeDialog({
<Box flexDirection="column" flexGrow={1}> <Box flexDirection="column" flexGrow={1}>
{/* Approval Mode Selection */} {/* Approval Mode Selection */}
<Text bold={focusSection === 'mode'} wrap="truncate"> <Text bold={focusSection === 'mode'} wrap="truncate">
{focusSection === 'mode' ? '> ' : ' '}Approval Mode{' '} {focusSection === 'mode' ? '> ' : ' '}
{t('Approval Mode')}{' '}
<Text color={theme.text.secondary}>{otherScopeModifiedMessage}</Text> <Text color={theme.text.secondary}>{otherScopeModifiedMessage}</Text>
</Text> </Text>
<Box height={1} /> <Box height={1} />
@@ -167,15 +169,17 @@ export function ApprovalModeDialog({
{showWorkspacePriorityWarning && ( {showWorkspacePriorityWarning && (
<> <>
<Text color={theme.status.warning} wrap="wrap"> <Text color={theme.status.warning} wrap="wrap">
Workspace approval mode exists and takes priority. User-level {' '}
change will have no effect. {t(
'Workspace approval mode exists and takes priority. User-level change will have no effect.',
)}
</Text> </Text>
<Box height={1} /> <Box height={1} />
</> </>
)} )}
<Text color={theme.text.secondary}> <Text color={theme.text.secondary}>
(Use Enter to select, Tab to change focus) {t('(Use Enter to select, Tab to change focus)')}
</Text> </Text>
</Box> </Box>
</Box> </Box>