Nit-Picking Manager

    mandarin

    5.0.2 • Public • Published

    mandarin

    build status code style styled with prettier made with lass license

    Automatic i18n markdown translation and i18n phrase translation using Google Translate

    Table of Contents

    Install

    npm:

    npm install mandarin

    Requirements

    Redis

    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.

    Google Application Credentials

    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

      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:

    GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json" node app.js

    Contributors

    Name Website
    Nick Baugh http://niftylettuce.com/

    License

    MIT © Nick Baugh

    Install

    npm i mandarin

    DownloadsWeekly Downloads

    36

    Version

    5.0.2

    License

    MIT

    Unpacked Size

    19.5 kB

    Total Files

    4

    Last publish

    Collaborators

    • niftylettuce
    • shaunwarman
    • titanism