hikaru-coffee
Version:
A static site generator that generates routes based on directories naturally.
74 lines (64 loc) • 1.75 kB
JavaScript
// Generated by CoffeeScript 2.3.1
(function() {
var Promise, Translator, format;
({format} = require("util"));
Promise = require("bluebird");
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._ = {};
}
register(lang, obj) {
var i, l, len;
if (!(obj instanceof Object)) {
throw new TypeError("obj must be a Object generated from yaml language file!");
return;
}
if (lang instanceof Array) {
for (i = 0, len = lang.length; i < len; i++) {
l = lang[i];
this._[l] = obj;
}
return;
}
return this._[lang] = obj;
}
list() {
return Object.keys(this._);
}
getTranslateFn(lang) {
return (key, ...args) => {
var i, k, keys, len, res;
keys = key.toString().split(".");
res = this._[lang];
if (!(lang in this._)) {
this.logger.info(`Hikaru cannot find language \`${lang}\`, using default.`);
res = this._["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 format(res, args);
} else {
return res;
}
}
if (args.length > 0) {
return format(key, args);
} else {
return key;
}
};
}
};
module.exports = Translator;
}).call(this);