1.1.2 • Published 3 years ago

i18n_modern v1.1.2

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

i18n Modern

Module to use localization in your project both backend with node js and frontend with any framework

Table of content

1 Installation

2 Use

2.1 Module Instance

2.2 Add a new locale

2.3 How to work the module

2.4 Get a locale value

how to install

npm install i18n_modern

how to use

the module can have several languages, to load it you can use any of the following methods

module instance

loading locale from url

import { i18nModern } from "i18n_modern";

const i18n = new i18nModern(
  "en-US", // default locale id
  "localhost:3000/en.json" // url to load the json locale
);

loading locale from object

import { i18nModern } from "i18n_modern";
import en from "./locales/en";

const i18n = new i18nModern(
  "en-US", // default locale id
  en // object to load locale
);

add locale

to add a locale after instantiating the module, either of these two functions must be used

if it is going to be loaded from a url:

...
i18n.loadFromUrl("localhost:3000/en.json", "en-US");

if it is going to be loaded from a object:

...
i18n.loadFromValue(en, "en-US");

how to work the module

this library has two peculiarities, the first is that it uses dot keys for example 'home.section1.tittle' this corresponds to the following structure of a json

{
  "home": {
    "section1": {
      "tittle": "Home Section 1"
    }
  }
}

and the second is that locales can have keys assertions for example

{
  "notificationsCount": {
    "0": "You have no notifications",
    "1": "You have one notification",
    "[notificationsCount] >= 2 && [notificationsCount] <= 10": "You have [notificationsCount] notifications",
    "[notificationsCount] > 10": "You have many notifications"
  }
}

to use the substitution of variables both in the key and in the values are placed between brackets []

getting a locale value

the module have a get method that can be used to get a locale value, the method takes two parameters, the first is a key and the second is the options object that include the locale id as locale and de data to be used as values

locales/en.json

{
  "notificationsCount": {
    "0": "You have no notifications",
    "1": "You have one notification",
    "[notificationsCount] >= 2 && [notificationsCount] <= 10": "You have [notificationsCount] notifications",
    "[notificationsCount] > 10": "You have many notifications"
  }
}

app.ts

import { i18nModern } from "i18n_modern";
import en from "./locales/en";

const i18n = new i18nModern(
  "en-US", // default locale id
  en // object to load locale
);

const notificationsCount = i18n.get("notificationsCount", {
  locale: "en-US",
  values: {
    notificationsCount: 10,
  },
});
// notificationsCount: You have many notifications