0.4.0 • Published 5 years ago

atool-l10n v0.4.0

Weekly downloads
16
License
MIT
Repository
github
Last release
5 years ago

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

npm.io

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
parameterdefaultdescription
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
parameterdefaultdescription
source'locales'where the local locales messages file is, file name is same as language name, eg: zh
skiptrueif 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
parameterdefaultdescription
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
parameterdefaultdescription
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
parameterdefaultdescription
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
parameterdefaultdescription
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
parameterdefaultdescription
autoPickfalseauto 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
parameterdefaultdescription
dest'locales'save locales messages into where, message file named by language name