feat: l18n

This commit is contained in:
Tsubasa6848
2024-03-24 05:16:18 +08:00
Unverified
parent 0034f21b98
commit 42bd769d5c
+61 -1
View File
@@ -649,6 +649,7 @@ class JsonConfig {
constructor(path, defultValue = {}) {
this.mData = defultValue;
this.mPath = path;
this.init();
}
init() {
@@ -688,6 +689,63 @@ class JsonConfig {
}
}
class JsonLanguage extends JsonConfig {
constructor(path, defultValue = {}) {
super(path, defultValue);
}
translate(key, data = []) {
let result = this.get(key);
if (result == null) {
return key;
}
data.forEach((val, index) => {
let old = `{${index + 1}}`;
result = result.split(old).join(val);
});
return result;
}
}
class JsonI18n {
constructor(path, localLangCode = "en_US") {
this.mPath = path;
this.mLangCode = localLangCode;
this.mAllLanguages = {};
this.mDefaultLangCode = "en_US"
}
loadLanguage(langCode, defaultData = {}) {
let langPath = this.mPath;
if (!langPath.endsWith("/") && !langPath.endsWith("\\")) {
langPath = langPath + "/";
}
langPath = langPath + langCode + ".json";
let language = new JsonLanguage(langPath, defaultData);
this.mAllLanguages[langCode] = language;
}
chooseLanguage(langCode) {
this.mLangCode = langCode;
}
setDefaultLanguage(langCode) {
this.mDefaultLangCode = langCode;
}
translate(key, data = [], langCode = this.mLangCode) {
let language = this.mAllLanguages[langCode];
let result = language.translate(key, data);
if (result == key) {
let language = this.mAllLanguages[this.mDefaultLangCode];
if (language) {
result = language.translate(key, data);
}
}
return result;
}
};
module.exports = {
StaticFloatingText,
DynamicFloatingText,
@@ -696,5 +754,7 @@ module.exports = {
Experiments,
GMLIB,
Scoreboard,
JsonConfig
JsonConfig,
JsonLanguage,
JsonI18n
};