如何为Unity多语言本地化JSON配置VS Code自动补全与提示功能
实现原理
VS Code的JSON智能补全、提示能力核心依赖JSON Schema规范。JSON Schema是一套用来定义JSON数据的合法结构、字段类型、描述说明的通用标准,VS Code内置的JSON语言服务会自动读取和当前JSON文件匹配的Schema规则,基于规则实现以下能力:
- 匹配你输入的前缀,给出符合Schema定义的合法键名补全选项
- 鼠标悬浮对应键时,展示你在Schema中预写的字段描述
- 校验当前JSON的键、值是否符合规则,对非法内容给出错误提示
你这个多语言本地化的场景,本质就是把你所有项目共用的本地化键提前定义到自定义Schema中,再让VS Code把所有本地化JSON文件和这个Schema做绑定即可。
具体配置步骤
- 编写自定义JSON Schema文件
在项目根目录(或你方便的路径)新建一个localization.schema.json文件,按你的键规则写入所有要复用的键、值类型、提示描述,示例如下:
{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "menu.pause.quit": { "type": "string", "description": "暂停菜单退出游戏按钮的显示文本" }, "menu.pause.resume": { "type": "string", "description": "暂停菜单恢复游戏按钮的显示文本" }, "ui.common.confirm": { "type": "string", "description": "通用弹窗确认按钮的显示文本" } // 后续新增本地化键都按上述格式补入即可 }, "additionalProperties": false }
注意:如果你的本地化JSON采用嵌套结构(而非带点的平级键名),把Schema的properties也对应写成嵌套结构即可。
additionalProperties为可选配置,开启后不在Schema中的键会被标记为错误,避免写错键名。
- 绑定Schema与本地化JSON文件
有两种绑定方式,推荐用项目级配置,全项目共享规则:
- 项目级配置(推荐)
在项目的.vscode/settings.json文件中添加如下配置,没有该文件可以手动创建:
{ "json.schemas": [ { "fileMatch": ["/Assets/Localization/*.json"], "url": "./localization.schema.json" } ] }
把
fileMatch的路径改成你项目里存放多语言JSON文件的实际路径,支持通配符,比如所有以lang_开头的JSON可以写成"lang_*.json";url改成你刚才创建的Schema文件的相对路径。
- 单文件声明
如果只需要给个别JSON文件加提示,可以直接在JSON文件第一行加Schema声明:
{ "$schema": "../../localization.schema.json", "menu.pause.quit": "Quit Game" // 其他键值对 }
- 效果验证
重启VS Code或执行Ctrl+Shift+P选择「重新加载窗口」,打开本地化JSON文件,输入键前缀即可看到自动补全提示,鼠标悬浮在已写的键上会显示你在Schema中定义的描述文本。
小技巧:如果你的项目本地化键数量很多,可以写个简单的Unity编辑器工具,扫描项目中所有用到的本地化键自动生成Schema文件,不需要手动维护。
内容的提问来源于stack exchange,提问作者giorgio_developer
相关产品推荐
相关产品推荐

