hikaru-coffee
Version:
A static site generator that generates routes based on directories naturally.
68 lines (60 loc) • 1.55 kB
JavaScript
// Generated by CoffeeScript 2.3.1
(function() {
var Translator, vsprintf;
({vsprintf} = require("sprintf-js"));
module.exports = Translator = class Translator {
constructor(logger) {
this.register = this.register.bind(this);
this.list = this.list.bind(this);
this.getTranslateFn = this.getTranslateFn.bind(this);
this.logger = logger;
this.store = {};
}
register(lang, obj) {
var i, l, len;
if (!(obj instanceof Object)) {
return;
}
if (lang instanceof Array) {
for (i = 0, len = lang.length; i < len; i++) {
l = lang[i];
this.store[l] = obj;
}
return;
}
return this.store[lang] = obj;
}
list() {
return Object.keys(this.store);
}
getTranslateFn(lang) {
return (key, ...args) => {
var i, k, keys, len, res;
keys = key.toString().split(".");
res = this.store[lang];
if (!(lang in this.store)) {
res = this.store["default"];
}
for (i = 0, len = keys.length; i < len; i++) {
k = keys[i];
if (!(k in res)) {
return key;
}
res = res[k];
}
if (typeof res === "string") {
if (args.length > 0) {
return vsprintf(res, args);
} else {
return res;
}
}
if (args.length > 0) {
return vsprintf(key, args);
} else {
return key;
}
};
}
};
}).call(this);