sublime text右键菜单汉化需修改packages/default/目录下的side bar.sublime-menu等json文件,仅改caption字段并确保语法正确、路径准确、context条件匹配,且必须彻底重启生效。

Sublime Text 的右键菜单汉化不是界面美化操作,而是直接触达编辑器插件系统与语言包加载机制的入口点。 它强制你面对 JSON 结构约束、上下文匹配逻辑、资源加载路径和缓存刷新规则——这些正是 ST 插件生态运转的底层齿轮。
为什么改 Side Bar.sublime-menu 文件后菜单没变中文
常见错误现象是改完保存、重启,但右键项仍是英文,甚至整个右键菜单消失。这通常不是翻译错了,而是 JSON 格式或路径失效:
-
caption字段外多加了逗号(JSON 不允许末尾逗号),导致整个文件解析失败,ST 会静默跳过该菜单文件 - 文件放在
Packages/User/下,但实际应放在Packages/Default/(覆盖目录方式);Packages/User/只对 Settings 或自定义插件生效,不参与菜单资源加载 - 用了中文引号(“”)或全角符号,必须严格使用英文双引号
" - 未彻底退出 Sublime Text(包括后台托盘进程),旧菜单缓存仍在内存中
context 字段决定菜单项是否出现,不是“翻译完就显示”
菜单项能否在右键时浮现,完全取决于 context 数组里定义的条件是否被当前光标/选中对象满足。例如:
{
"caption": "在终端打开",
"command": "open_terminal_project_folder",
"context": [
{ "key": "selector", "operator": "equal", "operand": "text.plain" },
{ "key": "setting.side_bar_visible", "operator": "equal", "operand": true }
]
}
上面这段不会出现在侧边栏文件夹上,因为 selector 匹配的是编辑区内容类型,不是文件系统节点。真正控制侧边栏右键的 key 是 selection_type 和 is_sidebar_visible,而 operand 必须是布尔字面量 true,不能写成 "true"(字符串)。
汉化过程暴露了 ST 的资源优先级与热加载边界
ST 加载菜单时按固定顺序查找:Packages/Default.sublime-package → Packages/Default/ → Packages/User/。只有前两级才参与菜单渲染,User/ 目录下的同名文件会被忽略。这意味着:
- 你无法用
Packages/User/Side Bar.sublime-menu覆盖默认菜单——它根本不会被读取 - 升级 ST 后,
Default.sublime-package更新,但你手动建的Packages/Default/目录不受影响,所以覆盖方式能持久化 - 没有热重载:改完 JSON 必须重启,ST 不监听文件变化并重新 parse 菜单结构
-
Preferences → Package Settings → ChineseLocalization菜单项本身,就是靠插件注册的sublime-menu文件实现的,它走的是另一套加载路径
真正卡住进阶者的,从来不是“怎么翻”,而是“翻完为什么没反应”——背后是 ST 对资源路径的硬编码判断、JSON 解析器的零容忍、以及 context 引擎对 operand 类型的隐式要求。这些细节不查源码、不试错、不看日志,只靠教程抄步骤永远绕不过去。











