Coder Social home page Coder Social logo

foxifyjs / i18n Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 728 KB

A lightweight translation module for Node.js and browser

Home Page: https://foxifyjs.github.io/i18n

License: MIT License

TypeScript 100.00%
translate translation international internationalization i18n

i18n's Introduction

I18n

A lightweight translation module for Node.js and browser.

NPM Version TypeScript Version npm bundle size (minified) npm bundle size (minified + gzip) Tested With Jest Pull Requests License Build Status Coverage Status Package Quality Dependencies Status NPM Total Downloads NPM Monthly Downloads Open Issues Closed Issues known vulnerabilities Github Stars Github Forks

Table of Contents

Installation

npm i @foxify/i18n

Usage

const I18n = require("@foxify/i18n");

Configure

config is an static method It gets an object containing the locales and an optional fallback locale, which would be "en" by default. Locales support dot notation and parameters...

I18n.config({
  fallback: "en", // optional, default: "en"
  locales: { // required
    en: {
      names: {
        Ardalan: "Ardalan",
      },
      greetings: {
        hello: "hello",
        hi: "hi, {{name}}", // translation with parameters (required parameter)
        hi2: "hi, {{name=}}", // optional parameter
        // default output: "hi, "

        hi3: "hi, {{name=foo}}", // optional parameter with default value: "foo"
        // default output: "hi, foo"

        hi4: "hi, {{name=$names.Ardalan}}", // optional parameter with default value referenced to translation: "Ardalan"
        // default output: "hi, Ardalan"

        hi5: "hi, {{$names.Ardalan}}", // value referenced to translation: "Ardalan" (this is not considered as a parameter)
        // output: "hi, Ardalan"
      },
    },
  },
  severity: "error", // optional, default: "error"
  // `ignore`: will return the key if no translation was found
  // `warn`: will warn (`console.warn`) and return the key if no translation was found
  // `error`: will throw an error if no translation was found

  strict: false, // optional, default: false
  // true: don't use the fallback locale for translation
  // false: use the fallback locale if necessary
});

Init

The I18n constructor accepts an optional locale parameter, which would be the fallback locale by default.

const i18n = new I18n();

Set the locale when creating new instance:

const i18n = new I18n("en");

Set the strict mode when creating new instance:

const i18n = new I18n(true);

Set the locale and the strict mode when creating new instance:

const i18n = new I18n("en", true);

Properties

console.log(i18n.locale); // instance's locale

console.log(i18n.direction); // instance's locale direction: "rtl" | "ltr"

translate

Translates the given string according the instance's locale and configured locales; If it doesn't find any translation and it isn't in strict mode, it will try again with the fallback locale; If it doesn't find any translation again, it will throw an error.

i18n.translate("greetings.hello");
i18n.t("greetings.hello");
// hello

i18n.translate("greetings.hello", true); // strict mode
i18n.t("greetings.hello", true);

i18n.translate("greetings.hi", { name: "Ardalan!" }); // pass the params
i18n.t("greetings.hi", { name: "Ardalan!" });
// hi, Ardalan!

i18n.translate("greetings.hi", { name: "$names.Ardalan" }); // you can use reference as param too
i18n.t("greetings.hi", { name: "$names.Ardalan" });
// hi, Ardalan

i18n.translate("greetings.hi", { name: "$names.Ardalan" }, true); // strict mode
i18n.t("greetings.hi", { name: "$names.Ardalan" }, true);

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE file for details

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.