Files
ece.suwa3d.com/src/lang/utils.ts
T
2025-06-05 09:25:26 +08:00

68 lines
1.2 KiB
TypeScript

import i18next from "i18next";
import { SimpleTFunction } from "i18next-vue";
let translation: SimpleTFunction;
export function set(f: SimpleTFunction) {
translation = f;
}
export function t(key: string, defaultValue: string) {
if (translation) {
let ret = translation(key, defaultValue);
return ret;
}
return defaultValue;
}
const mappingConfig: any = {
valid: false
};
const load = () => {
if (!mappingConfig.valid) {
const data = i18next.getDataByLanguage("zh-CN")?.translation;
for (const key in data) {
mappingConfig[String(data[key])] = key;
}
mappingConfig.valid = true;
}
};
export function toValue(t: any, key: string) {
load();
if (mappingConfig[key]) {
return t(mappingConfig[key]);
}
return key;
}
export function toValueWithout(key: string) {
load();
if (!mappingConfig.valid) {
const data = i18next.getDataByLanguage("zh-CN")?.translation;
for (const key in data) {
mappingConfig[String(data[key])] = key;
}
mappingConfig.valid = true;
}
if (mappingConfig[key]) {
return t(mappingConfig[key], key);
}
return key;
}
Object.defineProperty(String.prototype, "$t", {
get: function $t() {
return toValueWithout(this);
}
});
String.prototype.t = function $t() {
return toValueWithout(this);
}