locale.json 不是 VSCode 区域设置控制文件,仅为内部静态映射表;真正生效的是 argv.json 中的 "locale" 字段(UI语言)和系统环境变量(区域格式)。

locale.json 文件根本不能切换 VSCode 区域设置
直接说结论:locale.json 不是 VSCode 的区域设置(locale)控制文件,它只是 VSCode 内部用于多语言包加载的**静态映射表**,放在 vscode\resources\app\locales\ 下,由编辑器启动时读取,用户无法通过修改它来切换界面语言或区域格式(如日期、数字分隔符等)。
常见误解是看到项目根目录或用户数据目录里有 locale.json 就以为能改语言——实际上 VSCode 完全忽略用户手动创建或修改的该文件。
真正生效的区域设置入口只有两个地方
VSCode 的语言和区域行为由两层控制:界面显示语言(UI language)和系统级区域格式(locale for numbers/dates)。它们互不干扰,且都**不走 locale.json**:
-
UI 语言:通过命令面板运行
Configure Display Language(快捷键Ctrl+Shift+P/Cmd+Shift+P),选择语言后会生成/更新argv.json中的"locale"字段,并要求重启 -
区域格式(如
en-USvszh-CN的日期格式):取决于系统环境变量VSCODE_CLI不影响,但LC_ALL、LANG或 Windows 区域设置会被 Node.js 运行时读取,进而影响某些 API(如Intl.DateTimeFormat)的输出——但这不是 VSCode 主动配置项,而是底层依赖
为什么改了 locale.json 没反应?三个典型现象
你可能遇到这些情况,本质都是因为 VSCode 根本不读你改的那个文件:
- 在工作区或用户设置目录下新建
locale.json,VSCode 启动后界面语言完全不变 - 用文本编辑器打开 VSCode 安装目录里的
locales\locale.json,改了"en"→"zh",重启后还是英文界面 - 看到扩展(如 “Chinese (Simplified) Language Pack”)自带
locale.json,误以为启用扩展 = 修改了主程序 locale —— 实际上扩展只提供翻译资源,是否启用由argv.json决定
想快速切换,只做这两步就够了
别碰 locale.json,直接操作生效路径:
- 打开命令面板(
Ctrl+Shift+P),输入并执行Configure Display Language,选中目标语言(如zh-cn),保存后**必须完全退出 VSCode(包括托盘进程)再重开** - 如果需要让代码中
IntlAPI 按指定区域格式输出(比如调试时看toLocaleDateString()),不要改 VSCode 设置,而是在调试配置launch.json里加环境变量:"env": { "NODE_OPTIONS": "--icu-data-dir=./node_modules/full-icu" },并配合full-icu包和process.env.LC_ALL = "zh-CN"手动设置(仅限 Node.js 调试场景)
真正的区域设置切换,从来不在 JSON 文件里写死,而在启动参数或系统环境里动态生效——locale.json 只是翻译资源索引,不是开关。


















