功能说明
功能 1:文件路径翻译
使用场景
在 VSCode 资源管理器中右键新建文件/文件夹,输入包含任意非英文字符的路径,插件自动检测语言并翻译为英文。
操作流程
右键新建文件 → 输入路径 → 回车 → 选择翻译格式 → 回车 → 自动翻译创建按 Esc 取消格式选择时,原文件/文件夹会原样保留,不做翻译。
尾部数字快捷选格式(跳过弹窗)
启用 enableDigitFormatShortcut(默认开启)后,路径每个片段(文件去掉扩展名后,按路径分隔符与点号切分)末尾的孤立数字直接充当该片段的格式编号(与弹窗输入数字同一套映射:1=camelCase、2=PascalCase、3=snake_case、4=CONSTANT_CASE、5=param-case、6=Header-Case),数字不参与该片段的翻译与写入。目录与文件的格式互相独立:
- 文件段(最后一片段)命中时跳过弹窗;未命中时正常弹窗,所选格式只作用于文件段和"无数字且无继承来源"的片段
- 无数字的目录段继承最近下游带数字片段的格式;整条路径都没有数字时全部使用弹窗格式(与旧行为一致)
输入:用户/信息/用户1.java
命中:文件段 1 = camelCase(跳过弹窗)
结果:user/information/user.java(Java 模板内容同样替换为 user,而非 用户1/user1)
输入:用户/信息1/用户2.java
命中:信息1 = camelCase(1),用户2 = PascalCase(2),用户 继承下游的信息1
结果:user/information/User.java剪贴板原文同样剥离数字(用户2.java 的原文为 用户)。数字不生效时该片段按字面参与翻译:连续多位(用户12)、数字不在末尾(用户1信息)、编号越界(文件场景的 7/8/9、任何场景的 0)。文本选中场景同样适用此规则(7=Capital Case、8=no case、9=Sentence case 仅在文本中生效),详见功能 2。
示例
输入:用户名称/测试文件/测试.test.js
格式选择:
- camelCase: userName/testFile/test.test.js
- PascalCase: UserName/TestFile/Test.test.js
- snake_case: user_name/test_file/test.test.js
- CONSTANT_CASE: USER_NAME/TEST_FILE/TEST.test.js
- param-case: user-name/test-file/test.test.js
- Header-Case: User-Name/Test-File/Test.test.js撤回功能
按 Alt+Shift+Z → 删除翻译后的文件/目录 → 自动清理空目录 → 关闭该文件的编辑器窗口撤回规则:
- 撤回操作会直接删除翻译后的文件,而不是恢复到原始非英文路径
- 仅清理翻译时创建的目录:通过对比翻译前后的路径判断,相同前缀段(如
src/)属于用户原有目录,绝不清理 - 只关闭被删除文件的编辑器窗口,不会关闭其他已打开的文件
- 1 分钟内可撤回,1 分钟后自动清空撤回缓存
- 1 分钟内也可在资源管理器等非文本输入区直接按
Ctrl+Z撤回;编辑器内的Ctrl+Z保持原生文字撤销,不受影响
例如:在
src/下输入你好/世界/美好.test.js,翻译为src/hello/world/beautiful.test.js后撤回,会删除hello/world/和hello/,但src/无论是否为空都会保留。
文件名冲突处理
场景:目标文件已存在(如 test.test.js 已存在)
处理:自动添加数字后缀(如 test_1.test.js)并提示用户翻译失败降级
场景:翻译 API 调用失败(网络错误、配额用完等)
处理:按优先级降级到下一个服务 → 所有服务失败 → 自动降级为拼音翻译超时保护
所有翻译服务均有 10 秒超时控制,全局翻译超时也为 10 秒。超时后自动降级到下一个服务,最终降级为拼音,保证文件一定能创建成功。
复制到剪贴板
文件路径翻译完成后,会复用「翻译并复制」(Alt+Shift+C)的剪贴板逻辑,将最后一段目录名/文件名(不含扩展名)的翻译结果写入剪贴板,同样遵循 clipboardFormats 配置。
输入:你好/世界/美好.js
翻译:hello/world/beautiful.js
复制内容:beautiful(最后一段的翻译)- 开启
copyToClipboard且配置了clipboardFormats:按重排顺序逐条写入剪贴板历史(用户选择的格式排第一) - 未开启
copyToClipboard或clipboardFormats为空:兜底仅复制用户选择的单个格式 originalValue复制该段翻译前的原始文本(如美好)
多格式依赖剪贴板历史(Win+V)
多格式是「逐条写入剪贴板历史」,需开启系统剪贴板历史(Windows 按 Win+V)才能看到全部格式;普通 Ctrl+V 只会粘贴当前剪贴板(即你选择的格式)。文件翻译已将剪贴板写入安排在打开翻译后的文件之前,避免新编辑器打开引起焦点抖动而丢失历史中间项。
配置项
此功能可在设置中开启/关闭,也可按 Alt+Shift+D 快速切换:
{
"variableTranslator.enableFileTranslation": true
}功能 2:选中文本翻译
使用场景
在任意文件中编写非英文字符,选中后通过快捷键翻译并替换,适合变量、函数、类名的命名。
操作流程
选中文本 → 按下 Alt+Shift+T → 选择翻译格式 → 回车 → 替换为英文尾部数字快捷选格式
选中文本以孤立数字结尾(如 用户1)时跳过弹窗,直接按编号选定格式(文本场景 1-8 均可用);数字不参与翻译与剪贴板原文(用户1 的原文为 用户),且随选区替换一并消失(结果为 user 而非 user1)。规则详见功能 1。
示例
选中:用户名称
按下:Alt+Shift+T
格式选择:
- camelCase: userName
- PascalCase: UserName
- snake_case: user_name
- CONSTANT_CASE: USER_NAME
- param-case: user-name
- Header-Case: User-Name
- Capital Case: User Name
- no case: user name
- Sentence case: User name撤回
文本翻译后可使用 VSCode 自带的 Ctrl+Z 撤销替换操作。文件路径翻译的撤回请使用 Alt+Shift+Z,或在资源管理器等非文本输入区按 Ctrl+Z(见功能 1)。
功能 3:翻译并复制到剪贴板
使用场景
选中非英文文本后翻译,将结果按多种命名格式复制到剪贴板历史,原文本不会被替换。适合先在文档/注释中拟好中文名,再到代码中粘贴英文名。
操作流程
选中文本 → 按下 Alt+Shift+C → 选择翻译格式 → 翻译结果复制到剪贴板示例
选中:用户名称
按下:Alt+Shift+C
选择格式:camelCase
配置的 clipboardFormats:["originalValue", "camelCase", "snake_case"]
复制到剪贴板历史:
- 用户名称(原始值,翻译前的原始文本)
- userName(camelCase)
- user_name(snake_case)
当前剪贴板:userName(用户选择的格式)配置项
{
"variableTranslator.copyToClipboard": true,
"variableTranslator.clipboardFormats": [
"camelCase",
"originalValue",
"PascalCase",
"no case",
"snake_case",
"CONSTANT_CASE",
"param-case",
"Header-Case",
"Capital Case",
"Sentence case"
]
}clipboardFormats 可选值
| 值 | 说明 |
|---|---|
camelCase | 小驼峰 |
PascalCase | 大驼峰 |
snake_case | 下划线 |
CONSTANT_CASE | 常量格式 |
param-case | 连字符 |
Header-Case | 头部连字符 |
Capital Case | 每词首字母大写空格分隔 |
no case | 空格分隔 |
Sentence case | 仅整句首字母大写空格分隔 |
originalValue | 翻译前的原始文本(即你选中的中文文本) |
功能 4:翻译并剪切到剪贴板
使用场景
选中非英文文本后翻译,将结果按多种命名格式复制到剪贴板历史,同时删除选中的原文。适合需要替换文本并同时保留翻译结果的场景。
操作流程
选中文本 → 按下 Alt+Shift+X → 选择翻译格式 → 翻译结果复制到剪贴板 → 原文本被删除示例
选中:用户名称
按下:Alt+Shift+X
选择格式:camelCase
配置的 clipboardFormats:["camelCase", "PascalCase", "snake_case"]
复制到剪贴板历史:
- userName(camelCase)
- UserName(PascalCase)
- user_name(snake_case)
当前剪贴板:userName(用户选择的格式)
原文本「用户名称」已被删除与 Alt+Shift+C 的区别
- Alt+Shift+C:翻译复制后,原文本保留不变
- Alt+Shift+X:翻译复制后,原文本被删除(相当于"剪切翻译复制")
配置项
{
"variableTranslator.copyToClipboard": true,
"variableTranslator.clipboardFormats": [
"camelCase",
"PascalCase",
"snake_case"
]
}功能 5:切换翻译服务
按 Alt+Shift+S 或右键菜单选择「切换翻译服务」,在以下服务间快速切换:
- 拼音(零配置,默认)
- ChatGPT / OpenAI
- 谷歌翻译
- Bing / Azure Translator
- DeepLX
- 百度翻译
- 腾讯翻译君
选择未配置的服务时,插件会提示打开设置页面。详见翻译服务。
功能 6:格式化选中文本并复制(去符号)
使用场景
选中的内容已经是英文、但夹着 / . + @ - _ 等符号,想直接压成某种命名格式(如 MIME application/json → applicationJson)。含非英文片段时也会先翻译再格式化。
与「翻译选中文本」(Alt+Shift+T)的区别:该命令遇到纯英文会静默跳过,而本命令不要求含非英文字符,只做去符号 + 格式化。
与「翻译并复制」(Alt+Shift+C)的行为一致:结果只写入剪贴板,不改动编辑器原文,区别在于本命令对纯英文带符号内容也生效。
操作流程
选中文本 → 按下 Alt+Shift+N → 选择命名格式 → 格式化结果写入剪贴板(原文保持不变)尾部数字快捷选格式
与功能 2 同一套约定:选中 application/json1 时跳过弹窗直接按编号 1 取 camelCase,数字不参与格式化(结果为 applicationJson)。
示例
选中:application/json
按下:Alt+Shift+N → 输入 1(camelCase)
剪贴板:applicationJson(原文不变)任意复杂符号都视作分隔符,逐段拆分后重组:
选中:application/vnd.api+json@2.0
- camelCase: applicationVndApiJson20
- PascalCase: ApplicationVndApiJson20
- snake_case: application_vnd_api_json_2_0
- CONSTANT_CASE: APPLICATION_VND_API_JSON_2_0
- param-case: application-vnd-api-json-2-0
- Header-Case: Application-Vnd-Api-Json-2-0
- Capital Case: Application Vnd Api Json 2 0
- no case: application vnd api json 2 0
- Sentence case: Application vnd api json 2 0中英混排时只翻译非英文片段,英文与符号原样参与拆分:
选中:用户名称/json
按下:Alt+Shift+N → 输入 3(snake_case)
结果:user_name_json说明
- 词内撇号(
'’'`)直接删除以保留单词完整性(user's→users),其余非字母数字字符一律作为分隔符 - 选中内容全是符号(如
///)时净化后无有效单词,不写入剪贴板 - 未开启
copyToClipboard时只复制用户选择的那一种格式;开启后按clipboardFormats逐条写入剪贴板历史(Win+V 取用),当前剪贴板为用户选择的格式 - 原文不会被改动,因此无需撤销
命名格式说明
文件翻译格式
| 格式 | 示例 | 说明 |
|---|---|---|
| camelCase | userName | 小驼峰,首字母小写 |
| PascalCase | UserName | 大驼峰,首字母大写 |
| snake_case | user_name | 下划线分隔,全小写 |
| CONSTANT_CASE | USER_NAME | 下划线分隔,全大写 |
| param-case | user-name | 连字符分隔,全小写 |
| Header-Case | User-Name | 连字符分隔,首字母大写 |
选中文本翻译额外格式
| 格式 | 示例 | 说明 |
|---|---|---|
| Capital Case | User Name | 每词首字母大写,空格分隔 |
| no case | user name | 全小写,空格分隔 |
| Sentence case | User name | 仅整句首字母大写,空格分隔 |