mandarin
Version:
Automatic i18n markdown translation and i18n phrase translation using Google Translate
169 lines (118 loc) • 4.45 kB
Markdown
[](https://github.com/ladjs/mandarin/actions/workflows/ci.yml)
[](https://github.com/sindresorhus/xo)
[](https://github.com/prettier/prettier)
[](https://lass.js.org)
[](LICENSE)
> Automatic i18n markdown translation and i18n phrase translation using Google Translate
* [Install](
* [Requirements](
* [Redis](
* [Google Application Credentials](
* [Usage](
* [Contributors](
* [License](
[][]:
```sh
npm install mandarin
```
You will need to have [Redis][] installed in order for caching to work properly.
If you do not plan to use Redis, then set `redis: false` as an option.
You will also need Google Application Credentials, and you will need to set them as environment variables (e.g. `GOOGLE_APPLICATION_CREDENTIALS=/home/user/Downloads/service-account-file.json`).
For more information on Google Application credentials, see <https://cloud.google.com/docs/authentication/getting-started#setting_the_environment_variable>.
## Usage
1. Implement Mandarin and pass it an instance of [i18n][]
```js
const Mandarin = require('mandarin');
const I18N = require('@ladjs/i18n');
const i18n = new I18N();
// you can also pass a custom `logger` option (it defaults to `console`)
const mandarin = new Mandarin({
// REQUIRED:
i18n
// OPTIONAL:
// logger: console,
// OPTIONAL (see index.js for defaults):
// redis: ...
// OPTIONAL (see index.js for defaults):
// redisMonitor: ...
// OPTIONAL:
// see all commented options from this following link:
// <https://googleapis.dev/nodejs/translate/5.0.1/v2_index.js.html>
//
// clientConfig: {},
// OPTIONAL (see index.js for defaults):
// Files to convert from `index.md` to `index-es.md`
// Or `README.md` to `README-ZH.md` for example
// <https://github.com/sindresorhus/globby>
//
// markdown: ... (note we expose `Mandarin.DEFAULT_PATTERNS` for you)
});
//
// Translate Phrases
//
// with async/await
(async () => {
try {
await mandarin.translate();
} catch (err) {
console.log(err);
}
})();
// with promises and then/catch
mandarin
.translate()
.then(() => {
console.log('done');
})
.catch(console.error);
// with callbacks
mandarin.translate(err => {
if (err) throw err;
console.log('done');
});
//
// Translate Markdown Files
//
// with async/await
(async () => {
try {
await mandarin.markdown();
} catch (err) {
console.log(err);
}
})();
// with promises and then/catch
mandarin
.markdown()
.then(() => {
console.log('done');
})
.catch(console.error);
// with callbacks
mandarin.markdown(err => {
if (err) throw err;
console.log('done');
});
```
2. This assumes that you have locale files already and a default locale file (e.g. `./locales/en.json` with phrases that need translated to other languages you support). Based off the defaults from [i18n][], you would automatically get your `en.json` file translated to the locales `es` (Spanish) and `zh` (Chinese).
3. Follow the "Before you begin" steps here <https://cloud.google.com/translate/docs/basic/setup-basic> (basically you download a JSON file after creating a Google Cloud Project with Cloud Translation API enabled).
4. Specify the path to the JSON file and run your script that uses `mandarin`:
```sh
GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json" node app.js
```
| Name | Website |
| -------------- | -------------------------- |
| **Nick Baugh** | <http://niftylettuce.com/> |
[](LICENSE) © [Nick Baugh](http://niftylettuce.com/)
[]: https://www.npmjs.com/
[]: https://github.com/ladjs/i18n
[]: https://redis.io/