fix(i18n): sync mismatched keys between en.js and zh.js (#3534)
Some checks are pending
E2E Tests / E2E Test - macOS (push) Waiting to run
Qwen Code CI / Lint (push) Waiting to run
Qwen Code CI / Test (push) Blocked by required conditions
Qwen Code CI / Test-1 (push) Blocked by required conditions
Qwen Code CI / Test-2 (push) Blocked by required conditions
Qwen Code CI / Test-3 (push) Blocked by required conditions
Qwen Code CI / Test-4 (push) Blocked by required conditions
Qwen Code CI / Test-5 (push) Blocked by required conditions
Qwen Code CI / Test-6 (push) Blocked by required conditions
Qwen Code CI / Test-7 (push) Blocked by required conditions
Qwen Code CI / Test-8 (push) Blocked by required conditions
Qwen Code CI / Post Coverage Comment (push) Blocked by required conditions
Qwen Code CI / CodeQL (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:docker (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none (push) Waiting to run

* fix(i18n): sync mismatched keys between en.js and zh.js (#3503)

Add 4 keys missing from en.js that are actively used in source code,
add 5 missing Chinese translations to zh.js, integrate check-i18n
into CI to prevent future drift, and skip JSON file write in CI to
avoid dirtying the working tree.

---
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
jinye 2026-04-24 00:38:32 +08:00 committed by GitHub
parent d36f12c4c4
commit 4e0a37549d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 202 additions and 18 deletions

View file

@ -83,6 +83,9 @@ jobs:
- name: 'Run sensitive keyword linter'
run: 'node scripts/lint.js --sensitive-keywords'
- name: 'Run i18n check'
run: 'npm run check-i18n'
- name: 'Build CLI package'
run: 'npm run build --workspace=packages/cli'

View file

@ -575,6 +575,8 @@ export default {
'Updates all extensions or a named extension to the latest version.':
'Updates all extensions or a named extension to the latest version.',
'Update all extensions.': 'Update all extensions.',
'The name of the extension to update.':
'The name of the extension to update.',
'Either an extension name or --all must be provided':
'Either an extension name or --all must be provided',
'Lists installed extensions.': 'Lists installed extensions.',
@ -726,6 +728,7 @@ export default {
'User Settings': 'User Settings',
'System Settings': 'System Settings',
Extensions: 'Extensions',
'Session (temporary)': 'Session (temporary)',
// Hooks - Status
'✓ Enabled': '✓ Enabled',
'✗ Disabled': '✗ Disabled',
@ -1896,6 +1899,8 @@ export default {
// Coding Plan Authentication
// ============================================================================
'API key cannot be empty.': 'API key cannot be empty.',
'Invalid API key. Coding Plan API keys start with "sk-sp-". Please check.':
'Invalid API key. Coding Plan API keys start with "sk-sp-". Please check.',
'You can get your Coding Plan API key here':
'You can get your Coding Plan API key here',
'API key is stored in settings.env. You can migrate it to a .env file for better security.':
@ -1973,6 +1978,8 @@ export default {
'Show context window usage breakdown.',
'Run /context detail for per-item breakdown.':
'Run /context detail for per-item breakdown.',
'Show context window usage breakdown. Use "/context detail" for per-item breakdown.':
'Show context window usage breakdown. Use "/context detail" for per-item breakdown.',
'body loaded': 'body loaded',
memory: 'memory',
'{{region}} configuration updated successfully.':

View file

@ -578,6 +578,7 @@ export default {
'(user)': '(用户)',
'[not set]': '[未设置]',
'[value stored in keychain]': '[值存储在钥匙串中]',
'Value:': '值:',
'Manage extension settings.': '管理扩展设置。',
'You need to specify a command (set or list).':
'您需要指定命令set 或 list。',
@ -1037,6 +1038,8 @@ export default {
'Command:': '命令:',
'Working Directory:': '工作目录:',
'Capabilities:': '功能:',
'No server selected': '未选择服务器',
prompts: '提示',
// MCP Tool List
'No tools available for this server.': '此服务器没有可用工具。',
@ -1049,7 +1052,9 @@ export default {
'{{current}}/{{total}}': '{{current}}/{{total}}',
// MCP Tool Detail
required: '必需',
Type: '类型',
Enum: '枚举',
Parameters: '参数',
'No tool selected': '未选择工具',
Annotations: '注解',

View file

@ -429,15 +429,17 @@ async function main() {
console.log(` - "${key}"`),
);
// Save these keys to a JSON file
const outputPath = path.join(
__dirname,
'unused-keys-only-in-locales.json',
);
saveKeysOnlyInLocalesToJson(
result.stats.unusedKeysOnlyInLocales,
outputPath,
);
// Save these keys to a JSON file (skip in CI to avoid dirtying the working tree)
if (!process.env['CI']) {
const outputPath = path.join(
__dirname,
'unused-keys-only-in-locales.json',
);
saveKeysOnlyInLocalesToJson(
result.stats.unusedKeysOnlyInLocales,
outputPath,
);
}
}
console.log();

View file

@ -1,62 +1,229 @@
{
"generatedAt": "2026-01-07T14:56:23.662Z",
"generatedAt": "2026-04-22T15:40:32.318Z",
"keys": [
" - en-US: English",
" - zh-CN: Simplified Chinese",
" Models: Qwen latest models\n",
" qwen auth qwen-oauth - Authenticate with Qwen OAuth (discontinued)",
"(Press Enter to submit, Escape to cancel)",
"(Press Esc to close)",
"(Press Escape to go back)",
"(esc to cancel, {{time}})",
"(set)",
"A checkpoint with the tag {{tag}} already exists. Do you want to overwrite it?",
"API Key:",
"API key is stored in settings.env. You can migrate it to a .env file for better security.",
"API-KEY",
"About Qwen Code",
"Accept suggestion / Autocomplete",
"Add content to global memory.",
"Add content to project-level memory.",
"Add content to the memory. Use --global for global memory or --project for project memory.",
"Add file context",
"Any other key",
"Apply to current session only (temporary)",
"Approval mode changed to: {{mode}}",
"Approval mode changed to: {{mode}} (saved to {{scope}} settings{{location}})",
"Attempting to save to global memory: \"{{text}}\"",
"Attempting to save to memory {{scope}}: \"{{fact}}\"",
"Attempting to save to project memory: \"{{text}}\"",
"Auth Method",
"Authenticate with an OAuth-enabled MCP server",
"Authenticated successfully with {{region}}. API key and model configs saved to settings.json (backed up).",
"Auto-edit mode - Automatically approve file edits",
"Available approval modes:",
"CLI Version",
"Cannot ask user questions in non-interactive mode. Please run in interactive mode to use this tool.",
"Change auth (executes the /auth command)",
"Chat history is already compressed.",
"Checking...",
"Coding Plan API key not found. Please re-authenticate with Coding Plan.",
"Coding Plan configuration updated successfully. New models are now available.",
"Commands for interacting with memory.",
"Configured Hooks ({{count}} total)",
"Continue with {{model}}",
"Conversation checkpoint '{{tag}}' has been deleted.",
"Conversation checkpoint saved with tag: {{tag}}.",
"Conversation shared to {{filePath}}",
"Current (effective) configuration",
"Current approval mode: {{mode}}",
"Current memory content from {{count}} file(s):",
"Cursor: session={{sessionId}}, offset={{offset}}, updated={{updatedAt}}",
"Deduplicated entries: {{count}}",
"Default mode - Require approval for file edits or shell commands",
"Delete a conversation checkpoint. Usage: /chat delete <tag>",
"Destructive",
"Disable Auto Update",
"Disable Cache Control",
"Disable Fuzzy Search",
"Disable Loading Phrases",
"Disable Server",
"Disable an active hook",
"Disable an extension",
"Enable Prompt Completion",
"Enable Tool Output Truncation",
"Enable a disabled hook",
"Enable an extension",
"Error sharing conversation: {{error}}",
"Error: No checkpoint found with tag '{{tag}}'.",
"Example: /language output Português",
"Extension \"{{name}}\" disabled for scope \"{{scope}}\"",
"Extension \"{{name}}\" disabled successfully.",
"Extension \"{{name}}\" enabled for scope \"{{scope}}\"",
"Extension \"{{name}}\" enabled successfully.",
"Extension \"{{name}}\" uninstalled successfully.",
"Failed to authenticate with MCP server '{{name}}': {{error}}",
"Failed to change approval mode: {{error}}",
"Failed to login. Message: {{message}}",
"Failed to process user answers:",
"Failed to save approval mode: {{error}}",
"Failed to switch model to '{{modelId}}'.\n\n{{error}}",
"Failed to uninstall extension \"{{name}}\": {{error}}",
"Failed to update extension \"{{name}}\": {{error}}",
"Failed to validate credentials",
"Get started",
"Git Commit",
"Global memory content:\n\n---\n{{content}}\n---",
"Global memory file not found or is currently empty.",
"Global memory is currently empty.",
"IDE Mode",
"If the browser does not open, copy and paste this URL into your browser:",
"Installs an extension from a git repository URL, local path, or claude marketplace (marketplace-url:plugin-name).",
"Invalid credentials: {{errorMessage}}",
"Invalid file format. Only .md and .json are supported.",
"Invalid language. Available: en-US, zh-CN",
"LLM output language not set",
"LLM output language rule file generated at {{path}}",
"List active extensions",
"List available Qwen Code tools. Usage: /tools [desc]",
"List configured MCP servers and tools",
"List configured MCP servers and tools, or authenticate with OAuth-enabled servers",
"List of saved conversations:",
"List saved conversation checkpoints",
"MCP Management",
"MCP server '{{name}}' not found.",
"MCP servers with OAuth authentication:",
"Make sure to copy the COMPLETE URL - it may wrap across multiple lines.",
"Manage conversation history.",
"Managed auto-memory dream found nothing to improve.",
"Managed auto-memory extraction found no new durable memories.",
"Managed auto-memory extraction is already running.",
"Managed auto-memory root: {{root}}",
"Managed auto-memory topics:",
"Memory Discovery Max Dirs",
"Memory is currently empty.",
"Missing tag. Usage: /chat delete <tag>",
"Missing tag. Usage: /chat resume <tag>",
"Missing tag. Usage: /chat save <tag>",
"More instructions about configuring `modelProviders` manually.",
"NPM Version",
"New model configurations are available for Alibaba Cloud Coding Plan. Update now?",
"No MCP servers configured with OAuth authentication.",
"No chat client available to extract memory.",
"No chat client available to save conversation.",
"No chat client available to share conversation.",
"No conversation found to save.",
"No conversation found to share.",
"No extensions found.",
"No extraction cursor found yet.",
"No hooks configured. Add hooks in your settings.json file.",
"No saved checkpoint found with tag: {{tag}}.",
"No saved conversation checkpoints found.",
"Node.js Version",
"Not Sure Yet",
"Note: Newest last, oldest first",
"Note: Your existing API key in settings.json will not be cleared when using Qwen OAuth. You can switch back to OpenAI authentication later if needed.",
"Note: Your existing API key will not be cleared when using Qwen OAuth.",
"OS Arch",
"OS Platform",
"OS Release",
"Open MCP management dialog, or authenticate with OAuth-enabled servers",
"Open World",
"Open command menu",
"OpenAI API key is required to use OpenAI authentication.",
"OpenAI Configuration Required",
"Or scan the QR code below:",
"Paste your api key of ModelStudio Coding Plan and you're all set!",
"Persist for this project/workspace",
"Persist for this user on this machine",
"Plan mode - Analyze only, do not modify files or execute commands",
"Please answer the following question(s):",
"Please enter your OpenAI configuration. You can get an API key from",
"Press ? again to close",
"Press Enter or Esc to go back",
"Press Enter to continue, Tab/↑↓ to navigate, Esc to cancel",
"Press Enter to start authentication, Esc to go back",
"Press Y/Enter to confirm, N/Esc to cancel",
"Pro quota limit reached for {{model}}.",
"Project memory content from {{path}}:\n\n---\n{{content}}\n---",
"Project memory file not found or is currently empty.",
"Project memory is currently empty.",
"Project settings (local)",
"Qwen 3.6 Plus — efficient hybrid model with leading coding performance",
"Qwen OAuth authentication cancelled.",
"Qwen OAuth authentication timed out. Please try again.",
"Qwen OAuth free tier was discontinued on 2026-04-15. Run /auth to switch provider.",
"Rate limit error: {{reason}}",
"Read Only",
"Refresh the memory from the source.",
"Refreshing memory from source files...",
"Restarting MCP servers...",
"Restarts MCP servers.",
"Resume a conversation from a checkpoint. Usage: /chat resume <tag>",
"Reverse search history",
"Run managed auto-memory extraction for the current session.",
"Save a durable memory using the save_memory tool.",
"Save the current conversation as a checkpoint. Usage: /chat save <tag>",
"Saved in .qwen/settings.local.json",
"Scope subcommands do not accept additional arguments.",
"Set UI language to English (en-US)",
"Set UI language to Simplified Chinese (zh-CN)",
"Select API-KEY configuration mode:",
"Select the scope for this action:",
"Settings service is not available; unable to persist the approval mode.",
"Share the current conversation to a markdown or json file. Usage: /chat share <file>",
"Show global memory contents.",
"Show managed auto-memory status.",
"Show project-level memory contents.",
"Show the current memory contents.",
"The command \"/{{command}}\" is not supported in non-interactive mode.",
"The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)",
"This extension will exclude the following core tools: {{tools}}",
"Toggle shell mode",
"Toggle this help display",
"Tools for {{name}}",
"Uninstall an extension",
"Uninstalling extension \"{{name}}\"...",
"Unsupported scope \"{{scope}}\", should be one of \"user\" or \"workspace\"",
"Up to date",
"Update available",
"Update extensions. Usage: update <extension-names>|--all",
"Usage: /approval-mode <mode> [--session|--user|--project]",
"Usage: /language ui [zh-CN|en-US]",
"YOLO mode - Automatically approve all tools"
"Usage: /extensions uninstall <extension-name>",
"Usage: /extensions update <extension-names>|--all",
"Usage: /extensions {{command}} <extension> [--scope=<user|workspace>]",
"Usage: /memory add --global <text to remember>",
"Usage: /memory add --project <text to remember>",
"Usage: /memory add [--global|--project] <text to remember>",
"Usage: /remember [--global|--project] <text to remember>",
"Use /mcp auth <server-name> to authenticate.",
"Use /trust to manage folder trust settings for this workspace.",
"Use coding plan credentials or your own api-keys/providers.",
"User - Applies to all projects",
"User Scope",
"User declined to answer the questions.",
"User has provided the following answers:",
"View Extension",
"Vision Model Preview",
"Workspace - Applies to current project only",
"Workspace Scope",
"Y/Enter to confirm, N/Esc to cancel",
"YOLO mode - Automatically approve all tools",
"Yes, allow always ...",
"Yes, allow always for this session",
"Yes, always allow all tools from server \"{{server}}\"",
"Yes, always allow tool \"{{tool}}\" from server \"{{server}}\"",
"change the auth method",
"compact mode: on (Ctrl+O off)",
"↑/↓: Navigate | Space/Enter: Toggle | Esc: Cancel",
"↑/↓: Navigate | ←/→: Switch tabs | Space/Enter: Toggle | Esc: Cancel",
"✓ Enabled",
"✗ Disabled"
],
"count": 56
"count": 223
}