vs code唯一推荐的简体中文语言包是microsoft官方扩展ms-ceintl.vscode-language-pack-zh-hans,需安装后通过configure display language命令设locale为"zh-cn"并彻底重启才生效,第三方插件无效。

vscode-language-pack-zh-hans 是唯一推荐的语言包
VS Code 插件开发中,中文资源适配不是靠“汉化补丁”,而是依赖官方语言资源包 ms-ceintl.vscode-language-pack-zh-hans。它提供标准的 package.nls.json 本地化结构,所有插件若要支持中文,必须按此格式组织翻译文件。第三方“中文插件”对插件开发者毫无意义——它们只改编辑器 UI,不参与插件自身的国际化流程。
常见错误是误装 Chinese Language Pack 或 VSCode Chinese 这类非微软 ID 的扩展,它们既无 vscode-language-pack-zh-hans 的资源注册机制,也不被 vscode-nls 模块识别,会导致 vscode.l10n.t() 调用始终 fallback 到英文。
- 认准发布者为
Microsoft、ID 为ms-ceintl.vscode-language-pack-zh-hans - 插件开发时无需安装该包到本地,但 CI 构建环境(如 GitHub Actions)需确保其存在,否则测试会因 locale 缺失而失败
- 本地调试时,若
locale.json设为zh-cn但插件仍显示英文,先检查是否在package.json中声明了"contributes": { "localizations": [...] }
插件 package.nls.json 必须匹配 locale 值
package.nls.json 文件名里的语言代码必须小写且带连字符,例如 zh-cn,不能写成 zh_CN、ZH-CN 或 zh。VS Code 内部通过 vscode-nls 模块做精确字符串匹配,任何格式偏差都会导致整个中文资源加载失败,vscode.l10n.t() 返回原始键值而非翻译文本。
典型场景:你写了 package.nls.zh-cn.json,但用户系统 locale 是 zh-Hans(macOS 默认),这时 VS Code 会尝试匹配 zh-hans → zh → fallback,而不会命中 zh-cn。所以建议同时提供 package.nls.zh-hans.json 和 package.nls.zh-cn.json,覆盖不同系统行为。
- 文件必须放在插件根目录,与
package.json同级 - 内容必须是合法 JSON,空格、引号、逗号全部使用英文标点
- 键名必须与
vscode.l10n.t('key')中的字符串完全一致(包括大小写和空格)
vscode.l10n.t() 调用必须配合 activate() 生命周期
vscode.l10n.t() 不是全局函数,它依赖于插件激活时注入的本地化上下文。如果在 activate() 外部直接调用(比如模块顶层或工具函数里),会返回未翻译的原始字符串,且控制台无报错——这是最隐蔽的坑。
正确做法是在 activate() 函数内获取并缓存 vscode.l10n 实例,或使用 vscode.env.language + 动态 import 加载对应 nls 文件。尤其注意:Webview 或 WebViewPanel 中的 JS 无法直接访问 vscode.l10n,需通过 postMessage 传入已翻译的文案。
- 不要在
deactivate()里调用vscode.l10n.t(),此时上下文已销毁 - 异步命令(如
vscode.commands.registerCommand回调)中可安全调用,前提是命令注册发生在activate()内 - 若使用 Webpack 打包,需配置
resolve.alias指向vscode-nls,避免打包时漏掉本地化模块
远程开发(SSH/WSL)下中文资源不生效
Remote-SSH 或 WSL 环境中,插件的中文资源不会自动同步。VS Code 的 locale 设置是**进程级隔离**的:本地窗口读取本地 locale.json,远程窗口读取远程 ~/.vscode-server/data/Machine/settings.json。即使你在本地装了 vscode-language-pack-zh-hans,远程服务端没装,vscode.l10n.t() 就只能 fallback。
解决方法不是复制文件,而是让远程 VS Code Server 主动加载语言包。点击右下角状态栏的 SSH: xxx 或 WSL: Ubuntu,选择 Install 'Chinese (Simplified) Language Pack' in SSH: xxx。安装完成后,再在远程窗口执行 Configure Display Language → zh-cn → Restart。
- 远程安装后,检查远程路径
~/.vscode-server/extensions/ms-ceintl.vscode-language-pack-zh-hans-*是否存在 - 若远程是 Alpine Linux 等精简系统,可能缺少字体支持,需额外安装
font-noto-cjk或fonts-wqy-zenhei - CI 测试中模拟远程环境时,务必在容器内运行
code --install-extension ms-ceintl.vscode-language-pack-zh-hans
package.nls.zh-cn.json 是否被正确打包进 .vsix。用 unzip -l your-extension.vsix | grep nls 确认文件存在,再手动改本地 locale.json 测试真实渲染效果——截图比文档更可靠。











