你是否也经历过项目中国际化重复操作的痛?还在为项目国际化 cv 而烦恼吗?auto-command 你值得拥有。拒绝 CV 解放双手,保护键盘快乐摸鱼,自动化 yyds。
前言
做了很多国际化项目、感觉每次都要维护几份翻译文件真的很头疼。每次还要在不同文件之间进行 CV 操作反复横跳,再加上还要找网站翻译,翻译了业务方觉得不专业,还要求改。整套流程下来真的是身心疲惫,有没有什么办法可以让我只维护一份翻译文件,一条命令自动生成其他翻译文件呢?于是我做了一个工具来帮我完成这个事情。
功能演示
接下来介绍今天的主角 auto-command 中的 translate 功能,先上功能演示图。
支持提示功能的配置化文件
只需要引入 defineConfig 这个方法就能获取全部配置,并知道哪儿些是必填属性。
快速生成对应的翻译文件
4.5s自动生成1358 条数据,因为这个工具是基于语种进行并发请求理论上语种越多相对效率会越高。以我一分钟 3 条数据的翻译速度(可能加上网速也太理想)效能提升5600 倍,若你的手速快一点,网速快一点能够达到一分钟 10 条数据的翻译速度,效能也可以提升1680 倍。某个同学不服,展现出单生十年来年练就的手速,达到一秒一条数据,效能也能提升280 倍。所以你再考虑什么呢?有国际化需求用就完事了。
快速试用基于 ant-design-pro
流程如下(可参考 gif 图):
- 进入仓库地址复制连接
- 把代码克隆到本地
- 使用 pnpm 安装
- 进入例子目录运行
npx tcmd
实际应用场景
场景一
若是你公司要求不高,机翻就能满足要求,那么这个工具太适合你了。恭喜你,你可以快乐的摸鱼了。按照你的手速和数据量估计工时,然后自动化翻译。嘿嘿嘿。
场景二
这也是我应用到的场景,因为我做的是金融行业,对词汇要求比较专业,领域里的一些专业名词会由业务方提供,页面其他地方的文本可以用机翻。那么可以配置一个 keep 属性,这个属性如果开启,工具就不会对已经翻译过的词汇进行翻译了。我是先用 auto-command 跑一遍生成翻译,再使用业务方提供的文档进行替换。后续考虑加一个识别文档自动替换的功能。
如果你的需求和我不谋而合,欢迎来提 pr,如果有其他需求也欢迎来提 issues。项目地址
使用方法
step1 安装到项目
1 | $ npm i auto-command -D |
step2 在根目录增加配置文件.autocmd.ts,详细配置说明
1 | import { defineConfig } from 'auto-command/lib'; |
step3 使用 ac 命令选择 translate 选项(如上面我演示的一样),也可以在 package.json 里配置命令,直接使用 translate 功能。
1 | { |
目前的功能
格式支持
auto-command 目前支持 ant-design/pro-components(单文件层格式)和 ant-design/ant-design-pro(目录层)两种格式,并用这个工具查出这两个项目国际化的一些缺陷,详情见 PRfeat: 国际化补充模式生成和feat: 国际化基于 en_US 全量补充 。真棒,好像又解锁了一个新用法:混 pr 神器。如果这两种格式不能支持到你欢迎来提 issues 和 pr,为开源世界的翻译事业添砖加瓦。
翻译器种类
目前支持谷歌翻译(国外)和有道翻译(国内),谷歌翻译没有翻译上限,完全免费,但是需要科学上网。有道翻译需要注册一个开发者账号拿到 key(auto-command 内置了 key,仅供测试使用),每个月有词汇上限,用完得付费。理论上支持翻译器上所有的语言(118 种),基于对 ant-design-pro 的支持,目前开放 54 种语言支持,如果你有需求欢迎提 issues。
关于
命令行执行基于@txpjs/translate仓库来进行翻译的,实际用了 i18n 这个 api,你如果有定制化翻译的需求也可以使用这个仓库的基础 api - translate 进行翻译(目前支持有道、谷歌)。
结语
最后,欢迎提需求、提 pr。如果你也对效能提升感兴趣欢迎联系我一起交流。