An open API service indexing awesome lists of open source software.

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

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 local

automatical solution for generating localization resource using middlewares

[Demo in React](https://github.com/ant-design/intl-example)

![](https://zos.alipayobjects.com/rmsportal/JoGKhgfuFXaJNzK.gif)

## 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|