一键实现项目国际化!这个'开源' VSCode 插件让多语言开发变得如此简单 🚀

382 阅读3分钟

前言

使用babel解析成AST,替换中文为指定的key之后,在还原。

采用prettier格式化代码。默认读取项目根目录的prettier配置文件(.prettierrc.js)。

一键扫描整个项目的中文替换成key,并生成指定的语言包翻译文件。

marketplace.visualstudio.com/items?itemN…

github.com/wu529778790…

核心特性 ✨

  • 🔍 智能检测:自动扫描项目中的中文文案
  • 🔄 一键替换:将中文替换为规范的翻译键
  • 📦 自动生成:直接生成各语言的翻译文件
  • 🌐 实时预览:支持多语言实时切换显示
  • 🛠 高度可配置:支持自定义翻译键格式、排除规则等
  • 🎯 精准转换:基于 AST 解析,确保转换准确性
  • 💅 代码美化:集成 Prettier,保持代码风格统一

使用教程

扫描中文

扫描当前文件的所有的中文,并替换成key,并生成 zh.json 文件。

20240905155251

批量扫描中文

弹出选择文件夹,扫描所选文件夹的所有的中文,并替换成key,并生成 zh.json 文件。

生成语言包

弹出输入框(默认en),根据 zh.json 生成指定语言包文件

20240905160119

切换语言

替换之后在有key的每一行后面会显示对应的中文, 点击切换语言会切换成对应的语言。

读取的是本地文件,比如刚才生成了 en.json 就可以切换en语言

20240905160252

强大的配置能力

插件提供了丰富的配置选项,满足不同项目的需求:

  • 自定义国际化文件路径
  • 自动导入 i18n 模块
  • 自定义翻译函数调用方式
  • 文件路径层级配置
  • 排除特定文件和字符串
  • 支持百度翻译 API 自动翻译
属性描述默认值
i18nFilePath指定国际化文件的根目录。'/src/i18n'
autoImportI18n是否自动导入i18n模块。true
i18nImportPath自动导入i18n模块的路径。'@/i18n'
templateI18nCall在 Vue 模板中调用翻译函数的语法。'$t'
scriptI18nCall在 JavaScript 文件中调用翻译函数的语法。'i18n.t'
keyFilePathLevel生成的语言包的键中文件路径的层级。2
excludedExtensions排除的文件后缀名[".svg",".png",".jpg",".jpeg",".gif",".bmp",".ico",".md",".txt",".json",".css",".scss",".less",".sass",".styl"]
excludedStrings排除的字符串["宋体","黑体","楷体","仿宋","微软雅黑","华文","方正","苹方","思源","YYYY年MM月DD日"]
debug是否开启调试模式。false
baidu.appid百度翻译的应用ID。-
baidu.secretKey百度翻译的密钥。-

配置示例(首次使用会在项目根目录生成配置)

{
  "i18nFilePath": "/src/i18n",
  "autoImportI18n": true,
  "i18nImportPath": "@/i18n",
  "templateI18nCall": "$t",
  "scriptI18nCall": "i18n.t",
  "keyFilePathLevel": 2,
  "excludedExtensions": [
    ".svg",
    ".png",
    ".jpg",
    ".jpeg",
    ".gif",
    ".bmp",
    ".ico",
    ".md",
    ".txt",
    ".json",
    ".css",
    ".scss",
    ".less",
    ".sass",
    ".styl"
  ],
  "excludedStrings": ["宋体", "黑体", "楷体", "仿宋", "微软雅黑", "华文", "方正", "苹方", "思源", "YYYY年MM月DD日"],
  "debug": false,
  "baidu": {
    "appid": "",
    "secretKey": ""
  }
}

快速开始

  1. 在 VSCode 扩展商店搜索 "i18n-automatically" 并安装。(marketplace.visualstudio.com/items?itemN…
  2. 右键弹出菜单
  3. 选择 "扫描中文" 或 "批量扫描中文"
  4. 右键翻译

申请百度翻译

api.fanyi.baidu.com/doc/21

按照流程申请百度翻译api权限

20240910201102

然后点击开发者信息, api.fanyi.baidu.com/manage/deve…,复制appidsecretKey到配置文件中

20240910201237

提示:这里要选择高级版本。只要实名认证了,都可以高级版本,api没有那么多限制

20241009144522

结果对比

vue对比图:

20241017155847

点击链接查看完整对比图:www.diffchecker.com/WjmYT5g4/

jsx对比图:

20241017155908

点击链接查看完整对比图:www.diffchecker.com/bYgP5eUP/

20241017155929

ts对比图:www.diffchecker.com/IRWBVjHe/

20241017155823

js对比图:www.diffchecker.com/VyO3Zw6b/

20241017160240

tsx对比图:www.diffchecker.com/OaZLu99x/

未来规划 🚀

  • 支持更多翻译 API(如 DeepL、Google Translate 等)
  • 更多自定义配置选项
  • 性能优化和功能增强

GitHub: github.com/wu529778790…