Skip to content

Latest commit

 

History

History
143 lines (99 loc) · 4.51 KB

README.md

File metadata and controls

143 lines (99 loc) · 4.51 KB

atool-l10n

  • collection all meta data generated by babel
  • fetch translate result from machine translation center
  • save the translation into local

automatical solution for generating localization resource using middlewares

Demo in React

Usage

  • setup

    $ npm i atool-l10n --save-dev
  • add l10n.config.js into the same root dir of your project

    // default config
    module.exports = {
      middlewares: {
        summary: ['summary?sourcePattern=i18n-messages/**/*.json'],
        process: [
          'fetchLocal?source=locales,skip',
          'metaToResult?from=defaultMessage,to=zh',
          'youdao?apiname=iamatestmanx,apikey=2137553564',
          'reduce?-autoPick,autoReduce[]=local,autoReduce[]=meta',
        ],
        emit: ['save?dest=locales'],
      },
    };
  • run

    $ node_modules/.bin/atool-l10n

Options

  Usage: atool-l10n [options]

  Options:

    -h, --help        output usage information
    -v, --version     output the version number
    --config <dir>    where is the config file, default is l10n.config.js

Middleware

atool-l10n middlewares will execute one by one, with parameter query and shared context

A middleware may looks like this:

export default function something(query) {
  this.getMeta();
  this.setResult();
  this.setOption();
  ...
}
  • query: parameters passed to current middleware
    • parse from option.config(default is l10n.config.js)
    • parsed by loader-utils

Context

There are necessary operation and usefull methods on this context in the function

You can check the detail API via file

Built-in middlewares

  • summary: collect origin data generated from babel-plugin-react-intl
parameter default description
sourcePattern 'i18n-messages/**/*.json' where the messages json files is, specified in babel-plugin-react-intl, array supported
  • fetchLocal: add local locales messages as an option of translation result
parameter default description
source 'locales' where the local locales messages file is, file name is same as language name, eg: zh
skip true if add the id into translating skip array when all local locales messages for it is not empty
  • metaToResult: take defaultMessage or other key of meta into an option of translation result
parameter default description
from 'defaultMessage' using which key of meta, eg: defaultMessage, id, description...
to 'zh' the language you want to save as
  • youdao: fetch translate result from zh to en from youdao
parameter default description
apiname 'iamatestmanx' apiname you applied for machine translation from youdao
apikey '2137553564' apikey you applied for machine translation from youdao

you can easily apply the apiname and apikey from youdao

  • google: fetch translate result from zh to en from google translate
parameter default description
from 'zh-cn' string, what languages you want to translate from
to 'en' string, what languages you want to translate to
tld 'cn' string, which TLD of Google Translate you want to use, form: translate.google.${tld}

use google-translate-api

  • gugu: automatic contextualized translate for multi languages of each id from gugu, only available in alibaba-network
parameter default description
from 'zh' can be an array, what languages you want to translate from
to 'en' can be an array, what languages you want to translate to
  • reduce: pick the best translation, among all translation options in terminal
parameter default description
autoPick false auto pick the value of index [autoPick]
autoReduce ['local', 'meta'] auto reduce some options, the smallest index wins, values of the other index in the array will be delete
  • save: save translation result into local locale files, which are required directly by source code
parameter default description
dest 'locales' save locales messages into where, message file named by language name