feat: complete internationalization (i18n) for components

Implemented comprehensive i18n translation support for the following components:

1. GitSettings.jsx - Git configuration interface
2. ApiKeysSettings.jsx - API keys settings
3. CredentialsSettings.jsx - Credentials settings (GitHub tokens)
4. TasksSettings.jsx - TaskMaster task management settings
5. ChatInterface.jsx - Chat interface (major translation work)

New translation files:
- src/i18n/locales/en/chat.json - English chat interface translations
- src/i18n/locales/zh-CN/chat.json - Chinese chat interface translations

ChatInterface.jsx translations:
- Code block copy buttons (Copy, Copied, Copy code)
- Message type labels (User, Error, Tool, Claude, Cursor, Codex)
- Tool settings tooltip
- Search result display (pattern, in, results)
- Codex permission modes (Default, Accept Edits, Bypass Permissions, Plan)
- Input placeholder and hint text
- Keyboard shortcut hints (Ctrl+Enter/Enter modes)
- Command menu button

i18n configuration updates:
- Registered chat namespace in config.js
- Extended settings.json translations (git, apiKeys, tasks, agents, mcpServers sections)

完成以下组件的 i18n 翻译工作:

1. GitSettings.jsx - Git 配置界面
2. ApiKeysSettings.jsx - API 密钥设置
3. CredentialsSettings.jsx - 凭据设置(GitHub Token)
4. TasksSettings.jsx - TaskMaster 任务管理设置
5. ChatInterface.jsx - 聊天界面(主要翻译工作)

新增翻译文件:
- src/i18n/locales/en/chat.json - 英文聊天界面翻译
- src/i18n/locales/zh-CN/chat.json - 中文聊天界面翻译

ChatInterface.jsx 翻译内容:
- 代码块复制按钮
- 消息类型标签
- 工具设置提示
- 搜索结果显示
- Codex 权限模式(默认、编辑、无限制、计划模式)
- 输入框占位符和提示文本
- 键盘快捷键提示
- 命令菜单按钮

更新 i18n 配置:
- 在 config.js 中注册 chat 命名空间
- 扩展 settings.json 翻译(git、apiKeys、tasks、agents、mcpServers 等部分)
This commit is contained in:
YuanNiancai
2026-01-21 13:56:49 +08:00
parent 50f8c4ba72
commit 0517ee609e
15 changed files with 1214 additions and 311 deletions

View File

@@ -18,11 +18,13 @@ import enCommon from './locales/en/common.json';
import enSettings from './locales/en/settings.json';
import enAuth from './locales/en/auth.json';
import enSidebar from './locales/en/sidebar.json';
import enChat from './locales/en/chat.json';
import zhCommon from './locales/zh-CN/common.json';
import zhSettings from './locales/zh-CN/settings.json';
import zhAuth from './locales/zh-CN/auth.json';
import zhSidebar from './locales/zh-CN/sidebar.json';
import zhChat from './locales/zh-CN/chat.json';
// Import supported languages configuration
import { languages } from './languages.js';
@@ -53,12 +55,14 @@ i18n
settings: enSettings,
auth: enAuth,
sidebar: enSidebar,
chat: enChat,
},
'zh-CN': {
common: zhCommon,
settings: zhSettings,
auth: zhAuth,
sidebar: zhSidebar,
chat: zhChat,
},
},
@@ -72,7 +76,7 @@ i18n
debug: import.meta.env.DEV,
// Namespaces - load only what's needed
ns: ['common', 'settings', 'auth', 'sidebar'],
ns: ['common', 'settings', 'auth', 'sidebar', 'chat'],
defaultNS: 'common',
// Key separator for nested keys (default: '.')

View File

@@ -0,0 +1,111 @@
{
"codeBlock": {
"copy": "Copy",
"copied": "Copied",
"copyCode": "Copy code"
},
"messageTypes": {
"user": "U",
"error": "Error",
"tool": "Tool",
"claude": "Claude",
"cursor": "Cursor",
"codex": "Codex"
},
"tools": {
"settings": "Tool Settings",
"error": "Tool Error",
"result": "Tool Result",
"viewParams": "View input parameters",
"viewRawParams": "View raw parameters",
"viewDiff": "View edit diff for",
"creatingFile": "Creating new file:",
"updatingTodo": "Updating Todo List",
"read": "Read",
"readFile": "Read file",
"updateTodo": "Update todo list",
"readTodo": "Read todo list",
"searchResults": "results"
},
"search": {
"found": "Found {{count}} {{type}}",
"file": "file",
"files": "files",
"pattern": "pattern:",
"in": "in:"
},
"fileOperations": {
"updated": "File updated successfully",
"created": "File created successfully",
"written": "File written successfully",
"diff": "Diff",
"newFile": "New File",
"viewContent": "View file content",
"viewFullOutput": "View full output ({{count}} chars)",
"contentDisplayed": "The file content is displayed in the diff view above"
},
"interactive": {
"title": "Interactive Prompt",
"waiting": "Waiting for your response in the CLI",
"instruction": "Please select an option in your terminal where Claude is running.",
"selectedOption": "✓ Claude selected option {{number}}",
"instructionDetail": "In the CLI, you would select this option interactively using arrow keys or by typing the number."
},
"thinking": {
"title": "Thinking...",
"emoji": "💭 Thinking..."
},
"json": {
"response": "JSON Response"
},
"permissions": {
"grant": "Grant permission for {{tool}}",
"added": "Permission added",
"addTo": "Adds <span class=\"font-mono\">{{entry}}</span> to Allowed Tools.",
"retry": "Permission saved. Retry the request to use the tool.",
"error": "Unable to update permissions. Please try again.",
"openSettings": "Open settings"
},
"todo": {
"updated": "Todo list has been updated successfully",
"current": "Current Todo List"
},
"plan": {
"viewPlan": "📋 View implementation plan",
"title": "Implementation Plan"
},
"usageLimit": {
"resetAt": "Claude usage limit reached. Your limit will reset at **{{time}} {{timezone}}** - {{date}}"
},
"codex": {
"permissionMode": "Permission Mode",
"modes": {
"default": "Default Mode",
"acceptEdits": "Accept Edits",
"bypassPermissions": "Bypass Permissions",
"plan": "Plan Mode"
},
"descriptions": {
"default": "Only trusted commands (ls, cat, grep, git status, etc.) run automatically. Other commands are skipped. Can write to workspace.",
"acceptEdits": "All commands run automatically within the workspace. Full auto mode with sandboxed execution.",
"bypassPermissions": "Full system access with no restrictions. All commands run automatically with full disk and network access. Use with caution.",
"plan": "Planning mode - no commands are executed"
},
"technicalDetails": "Technical details"
},
"input": {
"placeholder": "Type / for commands, @ for files, or ask {{provider}} anything...",
"placeholderDefault": "Type your message...",
"disabled": "Input disabled",
"attachFiles": "Attach files",
"attachImages": "Attach images",
"send": "Send",
"stop": "Stop",
"hintText": {
"ctrlEnter": "Ctrl+Enter to send • Shift+Enter for new line • Tab to change modes • / for slash commands",
"enter": "Enter to send • Shift+Enter for new line • Tab to change modes • / for slash commands"
},
"clickToChangeMode": "Click to change permission mode (or press Tab in input)",
"showAllCommands": "Show all commands"
}
}

View File

@@ -7,6 +7,7 @@
"appearance": "Appearance"
},
"account": {
"title": "Account",
"language": "Language",
"languageLabel": "Display Language",
"languageDescription": "Choose your preferred language for the interface",
@@ -15,13 +16,6 @@
"profile": "Profile",
"changePassword": "Change Password"
},
"permissions": {
"allowedTools": "Allowed Tools",
"disallowedTools": "Disallowed Tools",
"addTool": "Add Tool",
"removeTool": "Remove Tool",
"description": "Configure which tools Claude can use. Tools must be enabled here before Claude can access them."
},
"mcp": {
"title": "MCP Servers",
"addServer": "Add Server",
@@ -71,5 +65,337 @@
"autoScrollToBottom": "Auto-scroll to bottom",
"sendByCtrlEnter": "Send by Ctrl+Enter",
"sendByCtrlEnterDescription": "When enabled, pressing Ctrl+Enter will send the message instead of just Enter. This is useful for IME users to avoid accidental sends."
},
"mainTabs": {
"agents": "Agents",
"appearance": "Appearance",
"git": "Git",
"apiTokens": "API & Tokens",
"tasks": "Tasks"
},
"appearanceSettings": {
"darkMode": {
"label": "Dark Mode",
"description": "Toggle between light and dark themes"
},
"projectSorting": {
"label": "Project Sorting",
"description": "How projects are ordered in the sidebar",
"alphabetical": "Alphabetical",
"recentActivity": "Recent Activity"
},
"codeEditor": {
"title": "Code Editor",
"theme": {
"label": "Editor Theme",
"description": "Default theme for the code editor"
},
"wordWrap": {
"label": "Word Wrap",
"description": "Enable word wrapping by default in the editor"
},
"showMinimap": {
"label": "Show Minimap",
"description": "Display a minimap for easier navigation in diff view"
},
"lineNumbers": {
"label": "Show Line Numbers",
"description": "Display line numbers in the editor"
},
"fontSize": {
"label": "Font Size",
"description": "Editor font size in pixels"
}
}
},
"mcpForm": {
"title": {
"add": "Add MCP Server",
"edit": "Edit MCP Server"
},
"importMode": {
"form": "Form Input",
"json": "JSON Import"
},
"scope": {
"label": "Scope",
"userGlobal": "User (Global)",
"projectLocal": "Project (Local)",
"userDescription": "User scope: Available across all projects on your machine",
"projectDescription": "Local scope: Only available in the selected project",
"cannotChange": "Scope cannot be changed when editing an existing server"
},
"fields": {
"serverName": "Server Name",
"transportType": "Transport Type",
"command": "Command",
"arguments": "Arguments (one per line)",
"jsonConfig": "JSON Configuration",
"url": "URL",
"envVars": "Environment Variables (KEY=value, one per line)",
"headers": "Headers (KEY=value, one per line)",
"selectProject": "Select a project..."
},
"placeholders": {
"serverName": "my-server"
},
"validation": {
"missingType": "Missing required field: type",
"stdioRequiresCommand": "stdio type requires a command field",
"httpRequiresUrl": "{{type}} type requires a url field",
"invalidJson": "Invalid JSON format",
"jsonHelp": "Paste your MCP server configuration in JSON format. Example formats:",
"jsonExampleStdio": "• stdio: {\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"@upstash/context7-mcp\"]}",
"jsonExampleHttp": "• http/sse: {\"type\":\"http\",\"url\":\"https://api.example.com/mcp\"}"
},
"configDetails": "Configuration Details (from {{configFile}})",
"projectPath": "Path: {{path}}",
"actions": {
"cancel": "Cancel",
"saving": "Saving...",
"addServer": "Add Server",
"updateServer": "Update Server"
}
},
"saveStatus": {
"success": "Settings saved successfully!",
"error": "Failed to save settings",
"saving": "Saving..."
},
"footerActions": {
"save": "Save Settings",
"cancel": "Cancel"
},
"git": {
"title": "Git Configuration",
"description": "Configure your git identity for commits. These settings will be applied globally via <code />git config --global<code />",
"name": {
"label": "Git Name",
"help": "Your name for git commits"
},
"email": {
"label": "Git Email",
"help": "Your email for git commits"
},
"actions": {
"save": "Save Configuration",
"saving": "Saving..."
},
"status": {
"success": "Saved successfully"
}
},
"apiKeys": {
"title": "API Keys",
"description": "Generate API keys to access the external API from other applications.",
"newKey": {
"alertTitle": "⚠️ Save Your API Key",
"alertMessage": "This is the only time you'll see this key. Store it securely.",
"iveSavedIt": "I've saved it"
},
"form": {
"placeholder": "API Key Name (e.g., Production Server)",
"createButton": "Create",
"cancelButton": "Cancel"
},
"newButton": "New API Key",
"empty": "No API keys created yet.",
"list": {
"created": "Created:",
"lastUsed": "Last used:"
},
"confirmDelete": "Are you sure you want to delete this API key?",
"status": {
"active": "Active",
"inactive": "Inactive"
},
"github": {
"title": "GitHub Tokens",
"description": "Add GitHub Personal Access Tokens to clone private repositories via the external API.",
"descriptionAlt": "Add GitHub Personal Access Tokens to clone private repositories. You can also pass tokens directly in API requests without storing them.",
"addButton": "Add Token",
"form": {
"namePlaceholder": "Token Name (e.g., Personal Repos)",
"tokenPlaceholder": "GitHub Personal Access Token (ghp_...)",
"descriptionPlaceholder": "Description (optional)",
"addButton": "Add Token",
"cancelButton": "Cancel",
"howToCreate": "How to create a GitHub Personal Access Token →"
},
"empty": "No GitHub tokens added yet.",
"added": "Added:",
"confirmDelete": "Are you sure you want to delete this GitHub token?"
},
"apiDocsLink": "API Documentation",
"documentation": {
"title": "External API Documentation",
"description": "Learn how to use the external API to trigger Claude/Cursor sessions from your applications.",
"viewLink": "View API Documentation →"
},
"loading": "Loading...",
"version": {
"updateAvailable": "Update available: v{{version}}"
}
},
"tasks": {
"checking": "Checking TaskMaster installation...",
"notInstalled": {
"title": "TaskMaster AI CLI Not Installed",
"description": "TaskMaster CLI is required to use task management features. Install it to get started:",
"installCommand": "npm install -g task-master-ai",
"viewOnGitHub": "View on GitHub",
"afterInstallation": "After installation:",
"steps": {
"restart": "Restart this application",
"autoAvailable": "TaskMaster features will automatically become available",
"initCommand": "Use task-master init in your project directory"
}
},
"settings": {
"enableLabel": "Enable TaskMaster Integration",
"enableDescription": "Show TaskMaster tasks, banners, and sidebar indicators across the interface"
}
},
"agents": {
"authStatus": {
"checking": "Checking...",
"connected": "Connected",
"notConnected": "Not connected",
"disconnected": "Disconnected",
"checkingAuth": "Checking authentication status...",
"loggedInAs": "Logged in as {{email}}",
"authenticatedUser": "authenticated user"
},
"account": {
"claude": {
"description": "Anthropic Claude AI assistant"
},
"cursor": {
"description": "Cursor AI-powered code editor"
},
"codex": {
"description": "OpenAI Codex AI assistant"
}
},
"connectionStatus": "Connection Status",
"login": {
"title": "Login",
"reAuthenticate": "Re-authenticate",
"description": "Sign in to your {{agent}} account to enable AI features",
"reAuthDescription": "Sign in with a different account or refresh credentials",
"button": "Login",
"reLoginButton": "Re-login"
},
"error": "Error: {{error}}"
},
"permissions": {
"title": "Permission Settings",
"skipPermissions": {
"label": "Skip permission prompts (use with caution)",
"claudeDescription": "Equivalent to --dangerously-skip-permissions flag",
"cursorDescription": "Equivalent to -f flag in Cursor CLI"
},
"allowedTools": {
"title": "Allowed Tools",
"description": "Tools that are automatically allowed without prompting for permission",
"placeholder": "e.g., \"Bash(git log:*)\" or \"Write\"",
"quickAdd": "Quick add common tools:",
"empty": "No allowed tools configured"
},
"blockedTools": {
"title": "Blocked Tools",
"description": "Tools that are automatically blocked without prompting for permission",
"placeholder": "e.g., \"Bash(rm:*)\"",
"empty": "No blocked tools configured"
},
"allowedCommands": {
"title": "Allowed Shell Commands",
"description": "Shell commands that are automatically allowed without prompting",
"placeholder": "e.g., \"Shell(ls)\" or \"Shell(git status)\"",
"quickAdd": "Quick add common commands:",
"empty": "No allowed commands configured"
},
"blockedCommands": {
"title": "Blocked Shell Commands",
"description": "Shell commands that are automatically blocked",
"placeholder": "e.g., \"Shell(rm -rf)\" or \"Shell(sudo)\"",
"empty": "No blocked commands configured"
},
"toolExamples": {
"title": "Tool Pattern Examples:",
"bashGitLog": "- Allow all git log commands",
"bashGitDiff": "- Allow all git diff commands",
"write": "- Allow all Write tool usage",
"bashRm": "- Block all rm commands (dangerous)"
},
"shellExamples": {
"title": "Shell Command Examples:",
"ls": "- Allow ls command",
"gitStatus": "- Allow git status",
"npmInstall": "- Allow npm install",
"rmRf": "- Block recursive delete"
},
"codex": {
"permissionMode": "Permission Mode",
"description": "Controls how Codex handles file modifications and command execution",
"modes": {
"default": {
"title": "Default",
"description": "Only trusted commands (ls, cat, grep, git status, etc.) run automatically. Other commands are skipped. Can write to workspace."
},
"acceptEdits": {
"title": "Accept Edits",
"description": "All commands run automatically within the workspace. Full auto mode with sandboxed execution."
},
"bypassPermissions": {
"title": "Bypass Permissions",
"description": "Full system access with no restrictions. All commands run automatically with full disk and network access. Use with caution."
}
},
"technicalDetails": "Technical details",
"technicalInfo": {
"default": "sandboxMode=workspace-write, approvalPolicy=untrusted. Trusted commands: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (without -exec), etc.",
"acceptEdits": "sandboxMode=workspace-write, approvalPolicy=never. All commands auto-execute within project directory.",
"bypassPermissions": "sandboxMode=danger-full-access, approvalPolicy=never. Full system access, use only in trusted environments.",
"overrideNote": "You can override this per-session using the mode button in the chat interface."
}
},
"actions": {
"add": "Add"
}
},
"mcpServers": {
"title": "MCP Servers",
"description": {
"claude": "Model Context Protocol servers provide additional tools and data sources to Claude",
"cursor": "Model Context Protocol servers provide additional tools and data sources to Cursor",
"codex": "Model Context Protocol servers provide additional tools and data sources to Codex"
},
"addButton": "Add MCP Server",
"empty": "No MCP servers configured",
"serverType": "Type",
"scope": {
"local": "local",
"user": "user"
},
"config": {
"command": "Command",
"url": "URL",
"args": "Args",
"environment": "Environment"
},
"tools": {
"title": "Tools",
"count": "({{count}}):",
"more": "+{{count}} more"
},
"actions": {
"edit": "Edit server",
"delete": "Delete server"
},
"help": {
"title": "About Codex MCP",
"description": "Codex supports stdio-based MCP servers. You can add servers that extend Codex's capabilities with additional tools and resources."
}
}
}

View File

@@ -0,0 +1,111 @@
{
"codeBlock": {
"copy": "复制",
"copied": "已复制",
"copyCode": "复制代码"
},
"messageTypes": {
"user": "U",
"error": "错误",
"tool": "工具",
"claude": "Claude",
"cursor": "Cursor",
"codex": "Codex"
},
"tools": {
"settings": "工具设置",
"error": "工具错误",
"result": "工具结果",
"viewParams": "查看输入参数",
"viewRawParams": "查看原始参数",
"viewDiff": "查看编辑差异",
"creatingFile": "创建新文件:",
"updatingTodo": "更新待办事项",
"read": "读取",
"readFile": "读取文件",
"updateTodo": "更新待办列表",
"readTodo": "读取待办列表",
"searchResults": "结果"
},
"search": {
"found": "找到 {{count}} 个{{type}}",
"file": "文件",
"files": "文件",
"pattern": "模式:",
"in": "在:"
},
"fileOperations": {
"updated": "文件更新成功",
"created": "文件创建成功",
"written": "文件写入成功",
"diff": "差异",
"newFile": "新文件",
"viewContent": "查看文件内容",
"viewFullOutput": "查看完整输出({{count}} 个字符)",
"contentDisplayed": "文件内容显示在上面的差异视图中"
},
"interactive": {
"title": "交互式提示",
"waiting": "等待您在 CLI 中响应",
"instruction": "请在 Claude 运行的终端中选择一个选项。",
"selectedOption": "✓ Claude 选择了选项 {{number}}",
"instructionDetail": "在 CLI 中,您可以使用方向键或输入数字来交互式地选择此选项。"
},
"thinking": {
"title": "思考中...",
"emoji": "💭 思考中..."
},
"json": {
"response": "JSON 响应"
},
"permissions": {
"grant": "授予 {{tool}} 权限",
"added": "权限已添加",
"addTo": "将 <span class=\"font-mono\">{{entry}}</span> 添加到允许的工具。",
"retry": "权限已保存。重试请求以使用该工具。",
"error": "无法更新权限。请重试。",
"openSettings": "打开设置"
},
"todo": {
"updated": "待办列表已成功更新",
"current": "当前待办列表"
},
"plan": {
"viewPlan": "📋 查看实施计划",
"title": "实施计划"
},
"usageLimit": {
"resetAt": "Claude 使用限制已达到。您的限制将在 **{{time}} {{timezone}}** - {{date}} 重置"
},
"codex": {
"permissionMode": "权限模式",
"modes": {
"default": "默认模式",
"acceptEdits": "编辑模式",
"bypassPermissions": "无限制模式",
"plan": "计划模式"
},
"descriptions": {
"default": "只有受信任的命令ls、cat、grep、git status 等)自动运行。其他命令将被跳过。可以写入工作区。",
"acceptEdits": "工作区内的所有命令自动运行。完全自动模式,具有沙盒执行功能。",
"bypassPermissions": "完全的系统访问,无限制。所有命令自动运行,具有完整的磁盘和网络访问权限。请谨慎使用。",
"plan": "计划模式 - 不执行任何命令"
},
"technicalDetails": "技术细节"
},
"input": {
"placeholder": "输入 / 调用命令,@ 选择文件,或向 {{provider}} 提问...",
"placeholderDefault": "输入您的消息...",
"disabled": "输入已禁用",
"attachFiles": "附加文件",
"attachImages": "附加图片",
"send": "发送",
"stop": "停止",
"hintText": {
"ctrlEnter": "Ctrl+Enter 发送 • Shift+Enter 换行 • Tab 切换模式 • / 斜杠命令",
"enter": "Enter 发送 • Shift+Enter 换行 • Tab 切换模式 • / 斜杠命令"
},
"clickToChangeMode": "点击更改权限模式(或在输入框中按 Tab",
"showAllCommands": "显示所有命令"
}
}

View File

@@ -7,6 +7,7 @@
"appearance": "外观"
},
"account": {
"title": "账户",
"language": "语言",
"languageLabel": "显示语言",
"languageDescription": "选择您偏好的界面语言",
@@ -15,13 +16,6 @@
"profile": "个人资料",
"changePassword": "修改密码"
},
"permissions": {
"allowedTools": "允许的工具",
"disallowedTools": "禁止的工具",
"addTool": "添加工具",
"removeTool": "移除工具",
"description": "配置 Claude 可以使用的工具。工具必须在此处启用后Claude 才能访问它们。"
},
"mcp": {
"title": "MCP 服务器",
"addServer": "添加服务器",
@@ -71,5 +65,337 @@
"autoScrollToBottom": "自动滚动到底部",
"sendByCtrlEnter": "使用 Ctrl+Enter 发送",
"sendByCtrlEnterDescription": "启用后,按 Ctrl+Enter 发送消息,而不是仅按 Enter。这对于使用输入法的用户可以避免意外发送。"
},
"mainTabs": {
"agents": "智能体",
"appearance": "外观",
"git": "Git",
"apiTokens": "API 和令牌",
"tasks": "任务"
},
"appearanceSettings": {
"darkMode": {
"label": "深色模式",
"description": "切换浅色和深色主题"
},
"projectSorting": {
"label": "项目排序",
"description": "项目在侧边栏中的排列方式",
"alphabetical": "按字母顺序",
"recentActivity": "最近活动"
},
"codeEditor": {
"title": "代码编辑器",
"theme": {
"label": "编辑器主题",
"description": "代码编辑器的默认主题"
},
"wordWrap": {
"label": "自动换行",
"description": "在编辑器中默认启用自动换行"
},
"showMinimap": {
"label": "显示缩略图",
"description": "在差异视图中显示缩略图以便于导航"
},
"lineNumbers": {
"label": "显示行号",
"description": "在编辑器中显示行号"
},
"fontSize": {
"label": "字体大小",
"description": "编辑器字体大小px"
}
}
},
"mcpForm": {
"title": {
"add": "添加 MCP 服务器",
"edit": "编辑 MCP 服务器"
},
"importMode": {
"form": "表单输入",
"json": "JSON 导入"
},
"scope": {
"label": "范围",
"userGlobal": "用户(全局)",
"projectLocal": "项目(本地)",
"userDescription": "用户范围:在您机器上的所有项目中可用",
"projectDescription": "本地范围:仅在选定项目中可用",
"cannotChange": "编辑现有服务器时无法更改范围"
},
"fields": {
"serverName": "服务器名称",
"transportType": "传输类型",
"command": "命令",
"arguments": "参数(每行一个)",
"jsonConfig": "JSON 配置",
"url": "URL",
"envVars": "环境变量KEY=值,每行一个)",
"headers": "请求头KEY=值,每行一个)",
"selectProject": "选择项目..."
},
"placeholders": {
"serverName": "我的服务"
},
"validation": {
"missingType": "缺少必填字段type",
"stdioRequiresCommand": "stdio 类型需要 command 字段",
"httpRequiresUrl": "{{type}} 类型需要 url 字段",
"invalidJson": "无效的 JSON 格式",
"jsonHelp": "粘贴您的 MCP 服务器配置JSON 格式)。示例格式:",
"jsonExampleStdio": "• stdio: {\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"@upstash/context7-mcp\"]}",
"jsonExampleHttp": "• http/sse: {\"type\":\"http\",\"url\":\"https://api.example.com/mcp\"}"
},
"configDetails": "配置详细信息(来自 {{configFile}}",
"projectPath": "路径:{{path}}",
"actions": {
"cancel": "取消",
"saving": "保存中...",
"addServer": "添加服务器",
"updateServer": "更新服务器"
}
},
"saveStatus": {
"success": "设置保存成功!",
"error": "保存设置失败",
"saving": "保存中..."
},
"footerActions": {
"save": "保存设置",
"cancel": "取消"
},
"git": {
"title": "Git 配置",
"description": "配置您的 git 提交身份。这些设置将通过 <code />git config --global<code /> 全局应用",
"name": {
"label": "Git 名称",
"help": "您的 git 提交名称"
},
"email": {
"label": "Git 邮箱",
"help": "您的 git 提交邮箱"
},
"actions": {
"save": "保存配置",
"saving": "保存中..."
},
"status": {
"success": "保存成功"
}
},
"apiKeys": {
"title": "API 密钥",
"description": "生成 API 密钥以从其他应用访问外部 API。",
"newKey": {
"alertTitle": "⚠️ 保存您的 API 密钥",
"alertMessage": "这是您唯一一次看到此密钥。请妥善保存。",
"iveSavedIt": "我已保存"
},
"form": {
"placeholder": "API 密钥名称(例如:生产服务器)",
"createButton": "创建",
"cancelButton": "取消"
},
"newButton": "新建 API 密钥",
"empty": "尚未创建 API 密钥。",
"list": {
"created": "创建时间:",
"lastUsed": "最后使用:"
},
"confirmDelete": "确定要删除此 API 密钥吗?",
"status": {
"active": "激活",
"inactive": "未激活"
},
"github": {
"title": "GitHub 令牌",
"description": "添加 GitHub 个人访问令牌以通过外部 API 克隆私有仓库。",
"descriptionAlt": "添加 GitHub 个人访问令牌以克隆私有仓库。您也可以直接在 API 请求中传递令牌而无需存储。",
"addButton": "添加令牌",
"form": {
"namePlaceholder": "令牌名称(例如:个人仓库)",
"tokenPlaceholder": "GitHub 个人访问令牌ghp_...",
"descriptionPlaceholder": "描述(可选)",
"addButton": "添加令牌",
"cancelButton": "取消",
"howToCreate": "如何创建 GitHub 个人访问令牌 →"
},
"empty": "尚未添加 GitHub 令牌。",
"added": "添加时间:",
"confirmDelete": "确定要删除此 GitHub 令牌吗?"
},
"apiDocsLink": "API 文档",
"documentation": {
"title": "外部 API 文档",
"description": "了解如何使用外部 API 从您的应用程序触发 Claude/Cursor 会话。",
"viewLink": "查看 API 文档 →"
},
"loading": "加载中...",
"version": {
"updateAvailable": "有可用更新v{{version}}"
}
},
"tasks": {
"checking": "正在检查 TaskMaster 安装...",
"notInstalled": {
"title": "未安装 TaskMaster AI CLI",
"description": "需要 TaskMaster CLI 才能使用任务管理功能。安装它以开始使用:",
"installCommand": "npm install -g task-master-ai",
"viewOnGitHub": "在 GitHub 上查看",
"afterInstallation": "安装后:",
"steps": {
"restart": "重启此应用程序",
"autoAvailable": "TaskMaster 功能将自动可用",
"initCommand": "在项目目录中使用 task-master init"
}
},
"settings": {
"enableLabel": "启用 TaskMaster 集成",
"enableDescription": "在整个界面中显示 TaskMaster 任务、横幅和侧边栏指示器"
}
},
"agents": {
"authStatus": {
"checking": "检查中...",
"connected": "已连接",
"notConnected": "未连接",
"disconnected": "已断开",
"checkingAuth": "正在检查认证状态...",
"loggedInAs": "登录为 {{email}}",
"authenticatedUser": "已认证用户"
},
"account": {
"claude": {
"description": "Anthropic Claude AI 助手"
},
"cursor": {
"description": "Cursor AI 驱动的代码编辑器"
},
"codex": {
"description": "OpenAI Codex AI 助手"
}
},
"connectionStatus": "连接状态",
"login": {
"title": "登录",
"reAuthenticate": "重新认证",
"description": "登录您的 {{agent}} 账户以启用 AI 功能",
"reAuthDescription": "使用其他账户登录或刷新凭据",
"button": "登录",
"reLoginButton": "重新登录"
},
"error": "错误:{{error}}"
},
"permissions": {
"title": "权限设置",
"skipPermissions": {
"label": "跳过权限提示(请谨慎使用)",
"claudeDescription": "等同于 --dangerously-skip-permissions 标志",
"cursorDescription": "等同于 Cursor CLI 中的 -f 标志"
},
"allowedTools": {
"title": "允许的工具",
"description": "无需权限提示即可自动使用的工具",
"placeholder": "例如:\"Bash(git log:*)\" 或 \"Write\"",
"quickAdd": "快速添加常用工具:",
"empty": "未配置允许的工具"
},
"blockedTools": {
"title": "禁用的工具",
"description": "无需权限提示即可自动禁用的工具",
"placeholder": "例如:\"Bash(rm:*)\"",
"empty": "未配置禁用的工具"
},
"allowedCommands": {
"title": "允许的 Shell 命令",
"description": "无需权限提示即可自动执行的 Shell 命令",
"placeholder": "例如:\"Shell(ls)\" 或 \"Shell(git status)\"",
"quickAdd": "快速添加常用命令:",
"empty": "未配置允许的命令"
},
"blockedCommands": {
"title": "阻止的 Shell 命令",
"description": "自动阻止的 Shell 命令",
"placeholder": "例如:\"Shell(rm -rf)\" 或 \"Shell(sudo)\"",
"empty": "未配置阻止的命令"
},
"toolExamples": {
"title": "工具模式示例:",
"bashGitLog": "- 允许所有 git log 命令",
"bashGitDiff": "- 允许所有 git diff 命令",
"write": "- 允许所有 Write 工具使用",
"bashRm": "- 阻止所有 rm 命令(危险)"
},
"shellExamples": {
"title": "Shell 命令示例:",
"ls": "- 允许 ls 命令",
"gitStatus": "- 允许 git status",
"npmInstall": "- 允许 npm install",
"rmRf": "- 阻止递归删除"
},
"codex": {
"permissionMode": "权限模式",
"description": "控制 Codex 如何处理文件修改和命令执行",
"modes": {
"default": {
"title": "默认",
"description": "只有受信任的命令ls、cat、grep、git status 等)会自动运行。其他命令将被跳过。可以写入工作区。"
},
"acceptEdits": {
"title": "接受编辑",
"description": "所有命令在工作区内自动运行。具有沙箱执行的全自动模式。"
},
"bypassPermissions": {
"title": "绕过权限",
"description": "完全系统访问,无任何限制。所有命令自动运行,具有完整的磁盘和网络访问权限。请谨慎使用。"
}
},
"technicalDetails": "技术详情",
"technicalInfo": {
"default": "sandboxMode=workspace-write, approvalPolicy=untrusted。受信任的命令cat、cd、grep、head、ls、pwd、tail、git status/log/diff/show、find不带 -exec等。",
"acceptEdits": "sandboxMode=workspace-write, approvalPolicy=never。所有命令在项目目录内自动执行。",
"bypassPermissions": "sandboxMode=danger-full-access, approvalPolicy=never。完全系统访问权限仅在可信环境中使用。",
"overrideNote": "您可以使用聊天界面中的模式按钮按会话覆盖此设置。"
}
},
"actions": {
"add": "添加"
}
},
"mcpServers": {
"title": "MCP 服务器",
"description": {
"claude": "Model Context Protocol 服务器为 Claude 提供额外的工具和数据源",
"cursor": "Model Context Protocol 服务器为 Cursor 提供额外的工具和数据源",
"codex": "Model Context Protocol 服务器为 Codex 提供额外的工具和数据源"
},
"addButton": "添加 MCP 服务器",
"empty": "未配置 MCP 服务器",
"serverType": "类型",
"scope": {
"local": "本地",
"user": "用户"
},
"config": {
"command": "命令",
"url": "URL",
"args": "参数",
"environment": "环境变量"
},
"tools": {
"title": "工具",
"count": "{{count}}",
"more": "还有 {{count}} 个"
},
"actions": {
"edit": "编辑服务器",
"delete": "删除服务器"
},
"help": {
"title": "关于 Codex MCP",
"description": "Codex 支持基于 stdio 的 MCP 服务器。您可以添加服务器,通过额外的工具和资源来扩展 Codex 的功能。"
}
}
}