Skip to content

结合umi的前端国际化的生成方案,自动生成国际化文件和文本

Notifications You must be signed in to change notification settings

StarFishing/umi-translate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

为 Umi 企业级项目搭建提供的自动国际化方案

前置条件

由于 umi 搭建的项目国际化文件全部归纳于 locales 文件夹下,因此本次的国际化方案也是以 locales 目录为入口进行文件分析,读取文本进行国际化,在写到对应的文件夹下

实现的功能

  • 提供同步和异步两种翻译方式
  • 翻译的文件自动插入到对应的目录下
  • 支持文件夹嵌套,多个层级的目录结构也不会影响翻译和结果的插入
  • 支持翻译失败的自动重试
  • 支持有道和谷歌两种 api
  • 支持收集错误日志,日志记录翻译错误的文本、当前的路径以及对应的语言,并会生成 json 日志文件
  • 支持每一个翻译结果的打印

使用方式

以 ant-design-pro 演示项目的国际化文本目录为例,文件夹结构如下图

fanyi.png

中文目录 zh-CN 下包含所有带翻译的文件,其中 zh-CN 目录下可以嵌套多个目录,如上图标注展示。翻译的入口为 zh-CN 文件夹,入口路径需要正确配置,否则无法正确的将翻译结果自动生成到其他语言的目录下,入口配置如下

// 需要翻译的语言以及翻译后生成的文件夹名
const pathMap = {
  en: "en-Us",
  ru: "ru-Ru",
  vi: "vi-Vi",
}
// 需要进入的中文目录名称
const baseDir = "zh-CN"

// 需要翻译的文件夹路径,从当前脚本文件夹找到locales目录
const rootDir = path.resolve(__dirname, "../locales")

// 说明:翻译脚本会根据rootDir+baseDir拼接处入口,所以请保证入口配置正确(正确配置后的格式样例:/Users/bigboss/Codeing/yourProject/src/locales/zh-CN)

自定义配置

在保证入口正确后就可以进行正常的翻译和文件的生成了,如果你还需要更改一些配置,我们提供了以下可以修改的配置

const openLog = false // 是否开启翻译结果打印
const API = "youdao" //翻译api 可选值为 youdao || google
const async = false // 是否异步翻译 默认为true (同步翻译有较高的容错,但是时间较长)

注意事项

  • 请确保 pathMap 中对应的语言和最终翻译文件所在的文件夹正确对应,否则可能会在翻译结束后文件生成时产生错误。

  • 请确保入口路径的正确配置,这是一切工作的前提

  • 脚本会在每次翻译进行前清除 pathMap 中定义的语言对应的文件夹,并在翻译结束后重新生成对应的文件和文件夹,目录结构和中文的目录结构保持一致。因此哪怕你只有带翻译的中文文件目录,也可以帮你生成对应的其他语言目录和文件。

  • 脚本不会对 locales 根目录下的 js 文件进行翻译,如下标注部分

    Snipaste_2020-06-20_23-21-29.png

    因为这里包含了其他文件的导入,算是入口文件,因此并不在翻译的范围内,如果这部分文件需要翻译,您只能手动进行翻译了,因此不建议入口文件包含文本信息。

  • 脚本默认过滤掉入口文件夹以及其所有子文件夹下以 index 命名的文件,我们认为这是入口文件,入口文件不应包含文本信息,所以我们会原封不动的将它写到其他语言对应的目录中。

正式版本在 translate 目录下,以日期命名的目录是历史改进的版本

About

结合umi的前端国际化的生成方案,自动生成国际化文件和文本

Resources

Stars

Watchers

Forks

Packages

No packages published