68 lines
No EOL
1.5 KiB
JavaScript
68 lines
No EOL
1.5 KiB
JavaScript
|
|
export class LanguagePool {
|
|
#pool = {};
|
|
constructor() {
|
|
|
|
}
|
|
addFile(elems, lang) {
|
|
Object.entries(elems).forEach(([k, d]) => {
|
|
if (typeof this.#pool[k] == "undefined") {
|
|
this.#pool[k] = new LanguagePoolString();
|
|
}
|
|
this.#pool[k].set(d, lang);
|
|
|
|
});
|
|
}
|
|
set lang(lang) {
|
|
Object.entries(this.#pool).forEach(([k, d]) => {
|
|
d.lang = lang;
|
|
})
|
|
}
|
|
get getFile() {
|
|
var out = {};
|
|
Object.entries(this.#pool).forEach(([k, d]) => {
|
|
out[k] = d.get("default");
|
|
});
|
|
return out;
|
|
}
|
|
add(tag, defaultText = "") {
|
|
let newS = typeof this.#pool[tag] == "undefined" ? new LanguagePoolString() : this.#pool[tag];
|
|
this.#pool[tag] = newS;
|
|
newS.set(defaultText, "default");
|
|
return newS;
|
|
}
|
|
get(tag) {
|
|
return this.#pool[tag];
|
|
}
|
|
}
|
|
|
|
export class LanguagePoolString {
|
|
#value = {
|
|
|
|
};
|
|
#lang = "en";
|
|
constructor() { }
|
|
|
|
set(v, lang) {
|
|
this.#value[lang] = v;
|
|
}
|
|
|
|
get(lang) {
|
|
return this.#value[lang];
|
|
}
|
|
|
|
set lang(lang) {
|
|
this.#lang = lang;
|
|
}
|
|
|
|
r(...str) {
|
|
var out = this.#value[this.#lang] == null ? this.#value.default : this.#value[this.#lang];
|
|
for (let i = 0; i < str.length; i++) {
|
|
out = out.replace("{}", str[i]);
|
|
}
|
|
return out;
|
|
}
|
|
toString() {
|
|
return this.#value[this.#lang] == null ? this.#value.default : this.#value[this.#lang];
|
|
}
|
|
} |