Files
2026-06-19 18:45:55 +08:00

79 lines
1.8 KiB
TypeScript

import source from "./../../src/lang/source.json";
import enUS from "./../../src/lang/en-US.json";
import zhCN from "./../../src/lang/zh-CN.json";
import {isDev} from "../lib/env";
import lang from "../mapi/lang/main";
import {ConfigMain} from "../mapi/config/main";
export const defaultLocale = "zh-CN";
let locale = defaultLocale;
export const langMessageList = [
{
name: "en-US",
label: "English",
messages: enUS,
},
{
name: "zh-CN",
label: "简体中文",
messages: zhCN,
},
];
const buildMessages = (): any => {
let messages = {};
for (let m of langMessageList) {
let msgList = {};
for (let k in source) {
const v = source[k];
if (m.messages[v]) {
msgList[k] = m.messages[v];
}
}
messages[m.name] = msgList;
}
return messages;
};
let messages = buildMessages();
export const t = (text: string, param: object | null = null) => {
if (isDev) {
lang.writeSourceKeyUse(text).then();
}
if (messages[locale]) {
if (messages[locale][text]) {
if (param) {
return messages[locale][text].replace(/\{(\w+)\}/g, function (match, key) {
return key in param ? param[key] : match;
});
}
return messages[locale][text];
}
}
if (isDev) {
lang.writeSourceKey(text).then();
}
if (param) {
return text.replace(/\{(\w+)\}/g, function (match, key) {
return key in param ? param[key] : match;
});
}
return text;
};
const readyAsync = async () => {
locale = await ConfigMain.get("lang", defaultLocale);
};
const getLocale = () => {
return locale;
};
export const ConfigLang = {
readyAsync,
getLocale,
};