vscode汉化失败提示“权限不足”实为locale.json写入被系统拦截,需手动创建utf-8无bom格式的{"locale":"zh-cn"}文件并确保用户目录可写,禁用管理员运行。

VSCode汉化失败时提示“权限不足”,基本不是语言包或翻译问题,而是locale.json写入被系统拦截——文件路径不可写、编码不合规、或配置目录被锁死,直接以管理员身份运行 VSCode 只会掩盖问题,还可能污染插件和终端环境。
locale.json 写入失败的典型现象
执行 Configure Display Language 后无反应、弹空列表、或重启仍英文;手动创建 locale.json 后无效;文件存在但内容为空或乱码。这些都不是命令没生效,而是 VSCode 尝试写入用户数据目录时被拒绝。
- Windows 下常见于安装在
C:Program Files且未提权启动,导致%APPDATA%CodeUser不可写 - macOS/Linux 上多因
~/.config/Code/User/所有者错乱(如曾用sudo code),当前用户无写权限 - 文件被其他进程(如 OneDrive、杀软、另一个 VSCode 实例)锁定,写入中途失败
手动修复 locale.json 的三步实操
绕过命令面板,直接干预配置文件是最稳的路径。关键不是“能不能写”,而是“写得对不对”:
- 先关闭所有 VSCode 实例(包括托盘后台进程)
- 用记事本或 VSCode 自身打开对应路径下的
locale.json:
Windows:%APPDATA%CodeUserlocale.json
macOS:~/Library/Application Support/Code/User/locale.json
Linux:~/.config/Code/User/locale.json - 删掉所有内容,只保留严格一行:
{"locale":"zh-cn"}(注意:双引号、小写、连字符、无空格、无 BOM、无注释) - 保存后,**不要**用管理员方式重启——直接双击图标或终端输入
code启动
为什么“以管理员身份运行”反而让汉化更难
一旦你右键快捷方式勾选了“以管理员身份运行此程序”,VSCode 启动后会以高完整性级别运行,它尝试写入 locale.json 时,系统可能因 UAC 策略拒绝向用户目录写入(尤其 Windows 10/11 默认限制跨完整性级别写用户路径)。结果就是:命令面板能打开,但点击确认后静默失败,locale.json 文件不变或变空。
- 任务管理器里看进程“提升级别”列,若显示“管理员”,说明你正被这个机制反向干扰
- 此时即使删掉
locale.json,再执行Configure Display Language,也大概率写不进去 - 真正该做的是清掉这个兼容性设置,再走手动写入流程
Remote-SSH / WSL 场景下容易漏掉的关键点
如果你通过 Remote-SSH 连到 Linux 服务器,或在 WSL 里开发,VSCode 本体界面汉化成功 ≠ 远程端也汉化。因为 locale.json 必须存在于远程环境的对应路径下,本地设置完全不影响远程 UI。
- SSH 连接后,在远程终端中运行:
code --list-extensions确认是否已连接到远程 - 然后手动在远程机器上编辑其
~/.config/Code/User/locale.json,内容同上 - WSL 用户注意:别在 Windows 资源管理器里直接改
\wsl$下的文件,要用 WSL 终端内 vim/nano 编辑,否则 NTFS 权限层会干扰
最常被忽略的是:locale.json 必须是 UTF-8 无 BOM。用 VSCode 打开它,右下角状态栏看编码标识,如果是 “UTF-8 with BOM” 或 “GBK”,必须另存为 “UTF-8” 并取消 BOM 选项——这点错,整个文件就失效。











