一站式 VSCode 国际化解决方案,让前端多语言项目开发效率提升 n 倍
选择以下任一方式安装:
- VSCode/Cursor 应用商店中搜索 i18n swapper
-
VSCode 命令面板 (
Ctrl+P
) 输入:ext install chimoo.i18n-swapper
-
直接从 VSCode Marketplace 下载
- 如已有中文国际化键值库,请选择【选择文件】
- 系统将根据源语言库,自动转义 t 方法到预览模式
i18n-swapper 是一款革命性的 VSCode 扩展,专为前端国际化工程化设计,将繁琐的国际化流程简化至极,提供前所未有的开发体验。
- 👁️ 实时预览:代码中直接查看翻译结果,所见即所得
- 🔍 智能检测:自动识别需国际化的文本,精准定位
- 🔄 一键替换:单击完成文本到国际化函数的转换
- 📦 批量处理:扫描整个项目,一次性处理所有国际化内容
- 🌐 多语言支持:集成翻译 API,支持 28+ 种语言自动翻译
- ⚙️ 高度可定制:自定义函数名、样式、键名生成规则等
- 🔑 智能键名:基于内容自动生成有意义的键名,无需手动命名
专为中文项目打造的全流程国际化解决方案:
-
智能键值生成 & 多语言同步
⌨️ 中文内容一键生成标准化键值,实时对接翻译引擎,28+ 语种同步生成,彻底告别手动翻译 -
智能路径反推
🔍 基于内容自动定位键路径,无需手动检索,大幅提升开发效率 -
多维度翻译洞察
🌐 可视化管理所有翻译状态:- 跨语言对比检查
- 缺失翻译提醒
- 一键定位文件路径
- 快速跳转代码引用
-
云翻译深度集成
☁️ 无缝对接腾讯云翻译 API,工作流完全自动化 -
空键批量生成
🔑 一键为所有空键生成智能键名,自动处理结构,同步翻译到全部语言文件 -
自定义显示风格
- 支持
t('译文')
或t('key')(译文)
显示模式 - 可自定义译文颜色/大小/粗细
- 支持自定义国际化函数名称
- 支持
- 🔍 精准文本查找:自动定位国际化键,智能引号处理
- 📂 多文件格式:支持 JSON/JS 文件,多文件路径配置
- 🚀 高效批量操作:全文件/全项目扫描,一键替换
- 🌍 完整翻译流程:键值生成、翻译、状态管理一体化
- 📊 可视化管理:直观展示多语言状态,快速定位问题
- 🔍 智能筛选:按文件名/路径快速过滤,精确定位
选中文本,右键菜单"替换为国际化调用"或快捷键 Ctrl+Alt+Y
/Cmd+Alt+Y
,插件会:
- 自动查找文本对应的国际化键
- 智能处理引号和括号
- 替换为国际化函数调用
- 自动处理 Vue 绑定语法(如
label="值"
→:label="t('key')"
)
graph LR
A[选择操作替换国际化] --> B{源语言库中存在文本?}
B -->|是| C[直接替换为函数调用]
B -->|否| D[生成国际化键值]
D --> E{使用API生成键值?}
E -->|是| F[调用API生成键值]
E -->|否| G[生成随机键值]
F --> H
G --> H{翻译所有语言?}
H -->|是| I[同步所有语言库]
H -->|否| J[仅更新源语言]
I --> K[完成替换]
J --> K
提供两种批量方式:
- 快速批量替换:扫描当前文件,自动替换已存在的文本
- 可视化批量替换:通过面板界面管理替换过程
graph LR
A[右键菜单批量替换] --> B[扫描当前文件中文文本]
B --> C{源语言库中存在匹配?}
C -->|是| D[批量反推国际化键]
C -->|否| E{如何处理?}
E -->|单体处理| F[逐个翻译]
E -->|面板管理| G[可视化管理]
D --> H[显示预览]
H --> I{用户操作}
I -->|单独处理| J[单个替换]
I -->|全部替换| K[批量替换]
I -->|取消| L[取消操作]
J --> M[完成]
K --> M
L --> N[结束]
提示:已有源语言库的项目适合使用此功能;新项目建议使用面板功能自动创建键值。
右键菜单"I18n Swapper: 打开面板"或快捷键 Ctrl+Alt+I
/Cmd+Alt+I
打开国际化管理面板。
自动检索源语言库,反推键路径,一键完成替换
通过颜色直观展示各语言文件翻译状态(绿色存在,红色缺失)
插件会根据您的文本,请求腾讯翻译API
再根据多语言映射配置,生成所有语言的翻译文本
根据场景选择单独/批量替换
左键跳转文件定位,右键快速编辑文本
一次性扫描整个项目,支持文件过滤、快速定位
点击后打开API配置面板:
首次使用:
- 打开命令面板
Ctrl+Shift+P
/Cmd+Shift+P
- 选择
i18n-swapper: 设置国际化文件路径
- 选择国际化文件
选中文本 → 快捷键 Alt+Shift+I
/Option+Shift+I
命令面板中选择 i18n-swapper: 批量替换国际化
快捷键 Alt+Shift+B
/Option+Shift+B
开启"扫描所有文件",使用顶部筛选框输入文件名/路径
| 选项 | 说明 | 默认值 |
| ----- | ---- | ----- |
| `localesPaths` | 国际化文件路径列表 | `[]` |
| `quoteType` | 生成代码中使用的引号类型 (`single` 或 `double`) | `single` |
| `functionName` | 国际化函数名称 | `t` |
| `scanPatterns` | 要扫描的属性模式列表(用于批量替换) | `[]` |
| `tencentTranslation.apiKey` | 腾讯云翻译 API 密钥 | `""` |
| `tencentTranslation.apiSecret` | 腾讯云翻译 API 密钥 | `""` |
| `tencentTranslation.region` | 腾讯云 API 区域 | `"ap-guangzhou"` |
| `tencentTranslation.sourceLanguage` | 源语言代码 | `"zh"` |
| `decorationStyle` | 国际化键预览样式 (`suffix` 或 `inline`) | `"suffix"` |
| `includeFiles` | 扫描工作区时要包含的文件或目录 | `[]` |
| `excludeFiles` | 扫描工作区时要排除的文件或目录 | `[默认排除]` |
| `autoGenerateKeyFromText` | 是否使用API生成有意义的键名 | `true` |
| `autoTranslateAllLanguages` | 是否自动翻译到所有语言文件 | `true` |
| `autoGenerateKeyPrefix` | 自动生成键名的前缀 | `""` |
| `scanTagContent` | 是否扫描HTML标签内的文本内容 | `true` |
extension.js
- 插件入口点,注册命令和激活上下文src/panels/BatchReplacementPanel.js
- 批量替换面板的主类,协调各种服务
src/panels/services/highlightService.js
- 处理代码高亮和装饰相关功能src/panels/services/i18nKeyStatusService.js
- 管理i18n键在不同语言文件中的状态src/panels/services/translationPanelService.js
- 处理面板中的翻译相关操作src/panels/services/documentAnalyzer.js
- 分析文档内容,识别可国际化的文本src/panels/services/languageFileManager.js
- 管理语言文件的创建和选择src/panels/services/replacementService.js
- 处理文本替换为国际化调用的逻辑src/panels/services/translationService.js
- 处理翻译API相关功能src/panels/services/emptyKeysGeneratorService.js
- 处理自动生成空国际化键名功能
src/panels/ui/panelHtmlGenerator.js
- 生成面板的HTML内容src/panels/ui/components/panelTemplate.js
- 面板HTML模板src/panels/ui/scripts/panelScripts.js
- 面板交互脚本src/panels/ui/scripts/generateEmptyKeysScripts.js
- 空键生成相关脚本
src/utils/language-mappings.js
- 语言映射相关常量src/utils/index.js
- 通用工具函数src/config/defaultsConfig.js
- 默认配置项
- 主控制器 -
BatchReplacementPanel.js
作为主控制器,协调各个服务模块 - 服务模块 - 每个服务模块负责一个特定功能领域:
- 高亮服务 - 处理代码高亮和装饰
- i18n键状态服务 - 管理国际化键的状态
- 翻译面板服务 - 处理翻译相关操作
- 文档分析服务 - 分析文档内容
- 语言文件管理服务 - 处理语言文件
- 替换服务 - 执行文本替换操作
- 用户界面 - 界面生成与业务逻辑分离
模块间通过回调函数或状态对象传递,确保功能完整性的同时实现代码模块化。
这种设计具有以下优点:
- 提高代码可维护性和可读性
- 关注点分离,使每个模块职责清晰
- 便于测试和调试
- 支持团队协作开发
Q: 插件找不到我的国际化键?
A: 检查国际化文件路径是否正确,确认文本完全匹配。
Q: 支持哪些文件格式?
A: JSON和JS文件(JS需导出对象)。
Q: 如何修改快捷键?
A: 通过VSCode快捷键设置修改。
Q: 项目不是用t()
函数?
A: 通过i18n-swapper.functionName
配置自定义函数名。
Q: 如何获取腾讯云API密钥?
A: 访问腾讯云控制台,在访问管理→API密钥管理创建。
Q: 支持哪些语言翻译?
A: 支持腾讯云API提供的28+种语言。
Q: 如何按文件名筛选?
A: 开启"扫描所有文件"后,使用顶部筛选框输入文件名/路径。
Q: 如何仅扫描特定文件夹?
A: 在面板配置中指定要扫描的文件/目录。
Q: 自动生成的键名格式?
A: 启用autoGenerateKeyFromText
时根据文本内容生成,格式为前缀.键名
。
i18n-swapper 遵循 Apache License 2.0 许可证。
新增空键自动生成功能,智能创建键名并翻译到所有语言文件。
新增全工作区扫描功能,支持文件筛选和指定范围搜索。