automatical solution for generating localization resource using middlewares
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
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
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();
...
}
option.config(default is l10n.config.js)
There are necessary operation and usefull methods on this
context in the function
You can check the detail API via file
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 resultparameter | 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 resultparameter | 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 youdaoparameter | 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 translateparameter | 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} |
gugu
: automatic contextualized translate for multi languages of each id from gugu, only available in alibaba-networkparameter | 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 terminalparameter | 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 codeparameter | default | description |
---|---|---|
dest |
'locales' |
save locales messages into where, message file named by language name |