i18n-ally插件需手动配置localespaths、languages等设置才能正常工作,否则预览、补全、缺失检测等功能失效;路径须为工作区根目录相对路径,子语言标签需显式声明,动态key不被识别,json格式须规范。

i18n-ally 插件本身不自动识别你的翻译文件,必须显式告诉它“去哪找”,否则所有功能(预览、补全、缺失检测)都失效——这不是插件坏了,是路径没对上。
VSCode 找不到 locales 文件夹
插件默认只扫描 src/locales、public/locales 这类约定路径。如果你的翻译文件在 src/i18n 或 assets/lang,它直接跳过。
- 在 VSCode 设置里搜
i18n-ally.localesPaths,改成数组形式:["src/i18n", "assets/lang"] - 路径必须是**相对于工作区根目录**的,别写
./src/i18n或绝对路径 - 改完后右键命令面板运行
i18n Ally: Reload Locales,重启 VSCode 不一定生效 - 如果用嵌套 JSON(如
{"common": {"submit": "提交"}}),记得开启i18n-ally.flattenNamespace,否则键名显示为common.submit而不是submit
i18n-ally 不识别 en-US、zh-Hans 等子语言标签
插件默认只认 en、zh 这类基础语言码,遇到带连字符的变体(如 en-US)会当无效 locale 处理,导致右侧语言栏空、键不亮色。
- 修改设置项
i18n-ally.languages,显式列出完整标签:["en", "en-US", "zh", "zh-Hans", "ja"] - 同时确认
i18n-ally.sourceLanguage设为其中某一个(例如"en-US"),否则源语言键可能被误标为“未翻译” - 注意:插件不校验运行时兼容性。Vue I18n v9 支持
zh-Hans,v8 只认zh,得你自己对齐框架版本
t() 里用了变量拼接,但插件标红 missing
像 t(`button.${type}`) 或 t(keys[i]) 这类动态 key,i18n-ally 静态分析无法推断值,直接报缺失——这不是 bug,是能力边界。
- 优先改写为字面量对象访问:
t(buttons[type]),前提是buttons是静态对象 - 对必须动态的场景,在对应 locale 文件中手动补全所有可能 key,哪怕先填占位符(如
"loading": "loading") - 可临时关掉
i18n-ally.warnIfMissing避免干扰,但别关i18n-ally.showMissingKey,它仍是发现真实漏翻的关键手段 - 若用
useI18n()组合式 API,检查是否漏了useScope: 'global',否则插件找不到上下文
JSON 文件里键名显示异常或补全失效
常见于用 TS 文件代替 JSON 存翻译内容,或 JSON 结构不符合插件预期(比如顶层不是对象、有注释、用了单引号)。
- 坚持用纯
.json格式,避免.ts导出对象——插件对 JSON 的读写支持最完整 - 确保 JSON 文件顶层是合法对象,无 BOM、无注释、无尾逗号、全用双引号
- 在
.vscode/settings.json中明确启用解析器:"i18n-ally.enabledParsers": ["json"] - 若用命名空间拆分文件(如
locales/zh-CN/user.json),需开启i18n-ally.namespace并配好i18n-ally.pathMatcher(如"{locale}.json"或"{locale}/{ns}.json")
最常被忽略的是:插件不会自动感知你新增的语言文件,哪怕路径和命名都对,也得手动触发重载;还有就是子语言标签和框架实际支持的 language code 必须一致,否则运行时 fallback 会静默失败。











