@arugaz/translator
v1.0.0-z.4
Published
Internationalization library with tiny size in ~350 bytes!
Downloads
150
Maintainers
Readme
Table of Contents
Features
- Simple and Familiar API
- Unobstrusive and Unopinionated
Install
$ npm install --save @arugaz/translator
$ yarn add @arugaz/translator
Usage
import Translate from "@arugaz/translator";
const i18n = Translate({
en: {
intro: {
welcome: "Welcome, {{username}}!",
text: "I hope it will be useful for you.",
},
support(obj) {
let hour = Math.floor(Math.random() * 3) + 9;
let str = `For questions, I'm available on ${obj.date.toLocaleDateString()}`;
str += `, any time after ${hour}:00.`;
return str;
},
},
});
// set default language
i18n.locale("en");
// add new language
i18n.set("id", {
intro: {
welcome: (obj) =>
`Selamat Datang, ${obj.feminine ? "mba" : "mas"} ${obj.username}!`,
text: "Saya harap ini akan berguna untuk Anda.",
},
});
// append extra key(s) to existing language
i18n.set("id", {
support(obj) {
let hour = Math.floor(Math.random() * 3) + 9;
let str = `Untuk pertanyaan, saya tersedia saat ${obj.date.toLocaleDateString()}`;
str += `, kapan saja setelahnya ${hour}:00.`;
return str;
},
});
const data = {
feminine: false,
username: "tobz",
date: new Date(),
};
// Retrieve translations
// NOTE: Relies on "en" default
i18n.translate("intro.welcome", data); //=> 'Welcome, tobz!'
i18n.translate("intro.text", data); //=> 'I hope it will be useful for you.'
i18n.translate("support", data); //=> 'For questions, I'm available on 10/4/2022, any time after 11:00.'
// Retrieve translations w/ lang override
i18n.translate("intro.welcome", data, "id"); //=> 'Selamat datang, mas tobz!'
// Change default language key
i18n.locale("id");
// Get language table based on key
i18n.get("en"); //=> { intro: { welcome: "...", text: "..." }, support: (obj) => "..." }
// Get a list of languages that have been added
i18n.listLanguage(); //=> ["en", "id"]
// Retrieve translations w/ new defaults
i18n.translate("intro.text", data); //=> 'Saya harap ini akan berguna untuk Anda.'
i18n.translate("intro.text", data, "en"); //=> 'I hope it will be useful for you.'