1.0.26 • Published 5 months ago

teletype-cli v1.0.26

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

teletype-cli多语言插件使用手册

teletype:打字机。 意义:愿以后的工作再也不受多语言翻译的迫害!

这个插件可以帮你做到,仅项目里输入中文一键棒帮你替换成英文,告别手动百度单词再编辑多语言json文件的痛苦。那么如何使用呢?here we go!

首先你需要按照teletype-cli在全局

npm i teletype-cli -g
或
yarn global add teletype-cli

当你看到这个,说明装好了(暂时忽略这里的缺陷报错~)

这时候我们需要打开需要翻译的项目,然后根目录下新建一个文件叫 teletype-config.js,文件内容如下:

/*
 * @Author: jizai jizai.zhu@tuya.com
 * @Date: 2022-08-07 14:49:43
 * @LastEditors: jizai jizai.zhu@tuya.com
 * @LastEditTime: 2022-10-14 17:01:17
 * @FilePath: /community-app-property-release-2.4.1/teletype-config.js
 * @Description: 项目配置文件
 */
module.exports = {
  teletypeDir: "client/static/locales", //项目多语言存放地址(用户需要按照项目修改)
  pageDir: 'client/containers', //页面文件的地址(用户需要按照项目修改)
  srcLang: "zh", //基础多语言类型
  distLangs: [ //所需要的翻译的类型
    "en",
  ],
  exportHeaders: //导出成excel时表头需要用户自定义
  {
    zh: '简体中文',
    en: '英语',
  },
  googleApiKey: "", //用户如果有谷歌翻译的api,可以填写进来
  baiduApiKey: { //调用百度翻译的api需要apiId和appKey,建议用户自己申请自己的,保证一些不必要的报错。
    appId: "20220725001283202",
    appKey: "PfhtKXtNKPj0mYuevmCI"
  },
  baiduLangMap: { //百度翻译的设置
    "en-US": "en",
    "zh-TW": "cht",
  },
  translateOptions: { //翻译时的设置,比如超过多少字符,截取key
    concurrentLimit: 10,
    requestOptions: {}
  }, 
  defaultTranslateKeyApi: "Baidu", //默认使用的翻译软件
  ignoreDir: "",
  ignoreFile: "",
  formatter: (v, extra) => `t('${v}'${extra ? extra : ''})`, //项目里如何调用t函数翻译的 (用户需要按照项目修改)
  importI18N: `import { useTranslation } from '@/utils/i18n'`,//项目里引入i18n的方式(用户需要按照项目修改)
  useI18NTranslation: file => `const { t } = useTranslation(['${file}'])` //项目里如何引入t函数的方式(用户需要按照项目修改)
}

到这里,我们就完成了teletype的所有配置。跑一跑试试。 回到项目的根目录,我们输入需要翻译文件夹📁(这里我建议按照文件夹翻译,原因后面说)

teletype --extract [file] 
这里的file是所需要翻译的文件夹基于项目根的相对地址

比如说: 我想翻译stock文件夹内的所有中文。我的file地址为:client/containers/borrow/stock。

在这里我想解释一下,为什么我一直说用文件夹去执行命令,而不是单个文件。因为teletype想帮你每一个文件夹下面的json都整合在一起,并且在json内,teletype也会按照文件夹下面的子文件创建对应的key名。对于微应用拆分也是极为方便的。

tips: Q:如何获得自己专属百度翻译apiId和apiKey。 A:可以注册https://fanyi-api.baidu.com/manage/developer,一个百度翻译开开发者。 然后找到开发者信息,查看自己的密钥。

导出篇

导出可以支持某语种的全量导出,或者diff导出。

teletype --export [file]

注意:teletype-cli是以线上的多语言为主,本地 对 线上 存有的key做了多语言变更是不会被diff出来的。

把需要导出的的多国语言,填写到teletype-config.js文件里的distLangs

//teletype-config.js

module.exports = {
 ....,
  distLangs: [
  "zh",
  'en',
  'ko',
  "ja"
  ],
...
}

其中lang指代需要导出的语种,file指代需要diff的json文件。file不必传,不传全量导出语言类目中的所有多语言词条,传了就是和传进来的json文件diff。

下图是获取json文件的方法,导出的json是全量的项目里的多语言,teletype-cli会按照你传进来的lang字段,去diff出本地项目和线上还没有的多语言词条。

img

1.0.23版本 修改了导出的逻辑,支持多国语言的导出,但是字段是以简体中文循环的。 举一个例子:如果项目里的多语言zh文件下的,你新增了一个多语言,导出的时候会在表格里。但是你如果在ko文件里(除zh文件以外)新增了一个多语言词条,是不会被导出来的。

导入篇

按照传入的json文件绝对地址和目标lang语种将线上的多语言文件导入本地。

teletype --import [lang] [file]

其中lang指代需要导入的语种,file指代需要导入的json文件。

注意:teletype-cli导入逻辑是 线上和本地多语言取的并集,如果有相同key是线上覆盖本地,如果本地有新增的key会保留,不会被剔除。