rosetta
Version:
A general purpose internationalization library in 298 bytes
28 lines (22 loc) • 540 B
JavaScript
const dlv = require('dlv');
const tmpl = require('templite');
module.exports = function (obj) {
var locale='', tree = obj || {};
return {
set(lang, table) {
tree[lang] = Object.assign(tree[lang] || {}, table);
},
locale(lang) {
return (locale = lang || locale);
},
table(lang) {
return tree[lang];
},
t(key, params, lang) {
var val = dlv(tree[lang || locale], key, '');
if (typeof val === 'function') return val(params);
if (typeof val === 'string') return tmpl(val, params);
return val;
}
};
}