anytv-i18n

A module for globalization

Usage no npm install needed!

<script type="module">
  import anytvI18n from 'https://cdn.skypack.dev/anytv-i18n';
</script>

README

anytv-i18n

A module for app internationalization

Install

npm install anytv-i18n@latest --save

Introduction

Simple example:

'use strict';

const i18n = require('anytv-18n');

i18n.configure({
    languages_url: 'http://translations.myapp.com/:project/languages',
    translations_url: 'http://translations.myapp.com/:project/:lang.json',
    locales_dir: '_locales',
    default: 'en',
    debug: true
});

i18n.use('freedom_dashboard')
    .load()
    .then(() => {

        // function to call when everything is loaded
        i18n.trans('zh_TW', 'greetings', {
            name: 'Raven!'
        });

        i18n.trans('non_existent_key'); // empty string
    })
    .catch(() => {
        // function to call when there's an error
    });



Configuration options

  • languages_url url for getting all available languages in json. :project will be replaced by the project you're using. Exact JSON format:
{
    "data": {
        "languages": [
            "en",
            "zh",
            "zh_TW"
        ]
    }
}
  • translation_url url for getting json translations. :project will be replaced by the project you're using. :lang will be replaced by the language you're using. Exact format:
{
    "greetings": "你好 :name",
    ...
}
  • locale_dir directory where the translations will be cached. should be an absolute path with a trailing backslach. example: /home/user/my-app/_locales/
  • debug set to true if you want to debug
  • logger replaces the default logger

    note: Only Winston-like loggers are accepted

Todo

  • Add test cases

Contributing

Install the tools needed:

npm install grunt -g
npm install --dev

To compile the ES6 source code to ES5:

grunt

To generate the docs:

esdoc -c ./esdoc.json

Running test

npm test

Code coverage

npm run coverage

Then open coverage/lcov-report/index.html.

License

MIT

Author

Freedom! Labs, any.TV Limited DBA Freedom!