https://github.com/ant-tool/atool-l10n
🌍 localized message files generating automatic solution
https://github.com/ant-tool/atool-l10n
i18n l10n l10n-helper react-intl translation
Last synced: 2 months ago
JSON representation
🌍 localized message files generating automatic solution
- Host: GitHub
- URL: https://github.com/ant-tool/atool-l10n
- Owner: ant-tool
- Created: 2016-08-05T08:10:06.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2019-04-11T05:45:54.000Z (about 6 years ago)
- Last Synced: 2025-04-09T18:43:16.977Z (2 months ago)
- Topics: i18n, l10n, l10n-helper, react-intl, translation
- Language: JavaScript
- Homepage:
- Size: 24.4 KB
- Stars: 47
- Watchers: 7
- Forks: 10
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.md
Awesome Lists containing this project
README
# atool-l10n
- collection all meta data generated by babel
- fetch translate result from machine translation center
- save the translation into localautomatical solution for generating localization resource using middlewares
[Demo in React](https://github.com/ant-design/intl-example)

## Usage
- setup
```bash
$ npm i atool-l10n --save-dev
```
- add `l10n.config.js` into the same root dir of your project```js
// 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```bash
$ node_modules/.bin/atool-l10n
```## Options
```bash
Usage: atool-l10n [options]
Options:
-h, --help output usage information
-v, --version output the version number
--config 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](https://github.com/webpack/loader-utils)#### Context
There are necessary operation and usefull methods on `this` context in the function
You can check the detail API via [file](https://github.com/ant-tool/atool-l10n/tree/master/src/context.js)
#### 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](http://fanyi.youdao.com/openapi?path=data-mode)
- `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](https://github.com/matheuss/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|