Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>i18n Inline ViewerNew to Visual Studio Code? Get it now.
i18n Inline Viewer

i18n Inline Viewer

dnj-meiko

|
1 install
| (0) | Free
代码中行内显示 i18next 译文
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

i18n Inline Viewer

在代码中行内显示译文、Cmd+点击一键跳转语言包编辑的 VSCode 扩展。面向采用统一 i18n 规范(i18next + 语言目录 + index.ts 聚合)的项目设计,配置驱动、开箱即用。

功能

  • 行内译文提示:t('customer.title') 调用处直接显示当前显示语言的译文(如「客户列表」),不修改文件内容;支持追加显示(调用后显示)与替换显示(隐藏 key 调用、译文直显)两种方式,译文颜色可自定义
  • Cmd+点击跳转编辑:macOS Cmd+左键点击(Windows/Linux Ctrl+左键,或 F12)→ 直接打开对应语言 JSON 并自动选中译文文本,落键即可覆盖修改
  • 侧边栏译文搜索:活动栏「译文搜索」视图,输入中文即时(300ms 防抖)直出代码使用处结果——原生搜索风格按文件折叠分组(折叠箭头 + 文件图标 + 文件名 + 路径 + 命中数;文件图标为当前图标主题的原生图标,如 Material / Seti),结果常驻、点击直达;Cmd+Alt+F 从编辑器带入选中译文。补齐"全文搜中文只能搜到语言包"的缺口
  • 当前文件译文面板:「译文搜索」视图下方的折叠面板,列出当前激活文件中的所有翻译调用(中文译文优先展示、key 与行号辅助显示,缺失/未定义有标记),点击即定位到对应代码位置;随文件切换、编辑与显示语言切换自动刷新
  • 切换显示语言:状态栏 + 命令,在 cn / en / es-MX 等语言间切换(自动发现)
  • 实时更新:代码新增 t('key')、语言包新增/修改词条,约 300ms 内自动刷新;新 key 尚未配译文时显示 ⚠ 未定义,一眼发现漏配
  • 通用兼容:自动识别 langs/{lang}/… 目录布局或 langs/cn.json 单文件布局;无 index.ts 时按路径推断前缀;同时兼容嵌套 JSON 与扁平点号键

支持的目录结构

结构 示例 说明
语言目录 + index.ts 聚合(标准规范) langs/cn/index.ts + langs/cn/**/*.json 精确解析 index.ts 的 import 与对象树,支持顶层别名(node → developmentModule/node.json)与嵌套前缀(purchase.common)
语言目录无 index.ts langs/cn/customer.json 按文件路径推断前缀:purchase/sample.json → purchase.sample.*
单文件语言包 langs/cn.json 整文件即全部词条

安装

团队分发(推荐):拿到 i18n-inline-viewer-<版本号>.vsix 后:

code --install-extension i18n-inline-viewer-<版本号>.vsix

或在 VSCode 扩展面板右上角 ... → Install from VSIX...。

安装/更新后请完整重载窗口(Developer: Reload Window)再使用——只「重启扩展宿主」不足以刷新窗口的扩展配置清单(详见「常见问题」)。

本地开发调试:

npm install
npm run watch        # 或 npm run build

用 VSCode 打开本项目,按 F5 选择 Run Extension (dev workspace)——会以一个已接入该规范的项目为被测试工作区启动扩展宿主(工作区路径可在 .vscode/launch.json 中调整)。首次请信任工作区(Workspace Trust)。

使用

操作 方式
切换显示语言 点击状态栏 i18n: cn,或 Cmd+Alt+L(Win/Linux Ctrl+Alt+L),或命令面板 i18n: 切换显示语言
切换译文显示方式 Cmd+Alt+M,或命令面板 i18n: 切换译文显示方式(追加显示 / 替换显示 / 关闭 / 更换译文颜色)
更换译文颜色 Cmd+Alt+C,或命令面板 i18n: 更换译文颜色(预设色板 / 自定义 CSS 颜色,即时生效)
开关行内提示 Cmd+Alt+H,或命令面板 i18n: 开关行内译文提示
跳转 / 快速修改 在 key 上 Cmd+左键点击(或 F12)→ 打开语言包并选中译文,直接输入覆盖;替换显示模式下直接点击译文即可跳转(追加模式同样支持)
按译文查代码引用 活动栏「译文搜索」视图直接输入译文(结果即时、常驻保留);或选中中文按 Cmd+Alt+F / 右键带入视图;视图内可一键「在内置搜索面板中打开」
当前文件译文 「译文搜索」视图下方的折叠面板:列出当前文件全部翻译,点击定位;点击面板标题可折叠/展开(状态保留)
重建索引 命令面板 i18n: 重建语言包索引

关于「在全局搜索框直接搜中文出代码文件」

VSCode 的内置全局搜索是纯文本搜索(ripgrep),不向扩展开放:扩展既不能读取/改写搜索框内容,也不能向搜索结果注入条目(官方明确扩展无法访问 UI DOM,也没有搜索 provider 贡献点)。而代码里只有 t('purchase.request.no'),中文仅存在于语言包——所以「在搜索框输中文、结果直接变成代码文件」在任何插件中都无法实现(i18n-ally 同样做不到),这是平台限制。

本扩展提供最接近原生体验的替代流程:侧边栏「译文搜索」视图(活动栏放大镜图标)——输入中文即时直出代码文件结果并常驻保留:

  1. 视图直搜:点击活动栏图标,输入译文 → 结果列表实时更新(原生风格:按文件折叠分组,组头为 折叠箭头 + 文件图标 + 文件名 + 路径 + 命中数,文件图标取当前图标主题的原生图标),点击条目即打开使用处;译文中命中的查询词按原生搜索同款配色高亮;文件组可折叠(发起新搜索时重置为全部展开)
  2. 编辑器带入:选中中文按 Cmd+Alt+F(或右键菜单),或光标停在语言包译文上、剪贴板含中文,都会自动带入视图执行搜索
  3. 转原生搜索面板:结果区「在内置搜索面板中打开」按钮(多 key 自动正则 OR 合并;自动附带去前缀后缀,t(`${localeKey}.a.b`) 模板拼写同样能命中;无结果或清空输入时该入口隐藏)

内置搜索面板只渲染文件原始文本,无法显示文件中不存在的译文(扩展不能向搜索结果注入内容)——所以「结果带中文」由本扩展的结果列表提供,而非原生面板。

新项目接入(同规范零配置)

  1. 安装 .vsix
  2. 若语言资源位于 src/locales/langs/{lang}/…(标准规范布局),无需任何配置;找不到时会自动搜索 src/locales、locales、public/locales 等常见位置
  3. 其他路径或约定,在项目 .vscode/settings.json 里显式声明:
{
  "i18nHelper.localePaths": ["src/locales/langs"],
  "i18nHelper.sourceLanguage": "cn",
  "i18nHelper.callNames": ["t"],
  "i18nHelper.include": ["src/**/*.{ts,tsx}"]
}

配置项

配置 默认值 说明
i18nHelper.localePaths ["src/locales/langs"] 语言资源根目录(相对 workspace 根),不存在时自动回退搜索常见位置
i18nHelper.localeIndexFile "index.ts" 语言目录聚合入口;不存在时按路径推断前缀
i18nHelper.sourceLanguage "cn" 源语言(缺失时的兜底语言,并决定 ⚠ 兜底标记)
i18nHelper.displayLanguage "cn" 行内提示展示语言,状态栏/命令可切换(写入用户级设置)
i18nHelper.languages [] 留空自动发现语言
i18nHelper.callNames ["t"] 识别的翻译函数名(可加 $t 等)
i18nHelper.detectMemberCalls true 是否识别 i18n.t(...) 等成员调用
i18nHelper.include ["src/**/*.{ts,tsx}"] 参与提示的源码 glob
i18nHelper.exclude ["**/e2e/**","**/node_modules/**","**/dist/**"] 排除的 glob
i18nHelper.inlayHints.enabled true 行内译文开关
i18nHelper.inlayHints.mode "append" 显示方式:append 追加显示 / replace 替换显示(隐藏 key 调用、译文直显)
i18nHelper.inlayHints.color "" 译文颜色(CSS 颜色值,如 #FF6B6B);留空使用主题色。也可用命令 i18n: 更换译文颜色(Cmd+Alt+C)快捷选择
i18nHelper.inlayHints.maxLength 60 提示最大字符数,超出截断
i18nHelper.inlayHints.showMissing true 目标语言缺失时用源语言兜底并加标记
i18nHelper.inlayHints.showUnresolved true 静态 key 全语言缺失时提示 ⚠ 未定义(仅对独立 t(...) 调用)
i18nHelper.inlayHints.fallbackMarker " (cn)" 兜底提示的附加标记

与 i18n-ally 共存

本扩展与 i18n-ally 的"行内显示译文"功能重叠。建议在项目 .vscode/settings.json 中关闭 i18n-ally 的行内注解,保留其 hover/编辑能力:

{
  "i18n-ally.annotations": false
}

调试扩展宿主时也可用 --disable-extension lokalise.i18n-ally 临时禁用。

常见问题

更新扩展后,Cmd+Alt+M 切换显示方式报「没有注册配置 i18nHelper.inlayHints.mode,因此无法写入用户设置」?

这是「装了新版本、但只重启了扩展宿主、窗口未完整重载」的典型状态:扩展代码已是新版(命令能触发),但窗口主进程的配置清单仍是旧版(不认识本版新增的配置项),因此新设置无法写入。

解法:完整重载窗口 —— 命令面板 → Developer: Reload Window(或退出 VSCode 重新打开)即可恢复。0.2.1 起遇到该情况会直接给出提示 + **一键「重载窗口」**按钮,不再抛晦涩错误。

已知限制

  • 动态 key 无法解析(t(key)、t(`${item.type}.label`)),不显示提示
  • 模板 key 仅折叠同文件 const X = 'literal' 常量(当前项目均无跨文件用法)
  • 反查使用处:同文件 const localeKey 折叠的模板调用(t(`${localeKey}.a.b`))可被精确定位;无法折叠的动态 key 在静态片段足够具体时以「⚠ 可能相关」列出;跨文件拼接的 key 无法覆盖
  • 成员调用(i18n.t)在全语言缺失时不提示 ⚠ 未定义,避免把恰好叫 .t 的其他对象方法误报
  • 替换显示模式下悬停译文:显示该译文的 i18n key(形如 `customer.title`,纯净无后缀)与可点击手型指针,点击跳转行为不变
    • 说明:曾基于 VSCode 原生链接(DocumentLink)实现「按住 Cmd 才显示手型」;但原生链接的悬停提示会被强制拼接 "(cmd + 单击)" 后缀且无法去除,与「提示只显示 key」冲突,现已改用自定义 Hover + cursor 注入(悬停即手型)
  • 追加显示模式下悬停 i18n key 文本:按住 Cmd 显示原生下划线 + 手势(由定义跳转机制提供)
  • 运行时切换语言/开关只写用户级设置,不改动任何业务仓库

开发

npm run typecheck   # 类型检查
npm run test        # vitest 单测(含对真实项目 index.ts 的断言,本机存在时执行)
npm run build       # esbuild 打包到 dist/extension.js
npm run smoke       # 打包产物冒烟(需先 build;stub vscode API 加载 bundle 并用真实语言包数据验证提示/跳转)
npx vsce package    # 产出 .vsix
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft