Skip to content

lejunyang/IntlTool

Repository files navigation

Electron + TypeScript + Babel + Vue-eslint-parser + React + Antd

一个用于扫描Intl和将中文转为Intl的工具,目前支持三种格式的intl

  • Hzero Intl格式,即intl.get(code, params).d(),其导出格式为csv
  • Umi Intl格式,目前并没有直接支持其intl.formatMessage格式,而是需要通过工具函数改为intl.get.d,其导出格式为JS对象
  • Vue i18n格式,即intl(code, params).d()this.intl().d(),导出格式为JSON

由于是使用babel在语法树的层面对调用表达式进行检测,所以不用考虑注释,字符串不会有引号的问题,不会有代码格式的问题。

代码中有对模板字符串的检测逻辑:

  • get中的模板字符串支持插入变量,但该变量必须在该文件的最外层定义,并且为字符串常量
  • d中的模板字符串同样支持插入变量和表达式,根据intl的使用规范,d中插入了变量,必须在get中的第二个参数提供该变量,这同样在代码中有检测。注意,如果使用了模板字符串中使用了比较复杂的表达式可能会造成问题

我并没有找到合适的Vue AST工具,目前使用的是vue-eslint-parser转化为语法树并检测,其中template中的中文转intl是手动字符串替换,因为vue-eslint-parser并没有提供好的工具函数,恼( Vue中的script仍然是使用babel处理,目前还存在一些问题,比如uniapp预编译注释的会使babel解析报错(比如在不同的预编译注释里面重复定义了变量)

代码结构

electron -- 主线程代码
  generate -- 代码或AST节点生成相关
  parse -- 代码解析为AST
  traverse -- 遍历AST相关
  main.ts -- 主线程入口
  Manager.ts -- 管理数据的类
src -- 渲染线程代码

Installation

Use a package manager of your choice (npm, yarn, etc.) in order to install all dependencies

yarn

Usage

Just run start script.

yarn start

Packaging

To generate the project package based on the OS you're running on, just run:

yarn package

Contributing

Pull requests are always welcome 😃.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published