30 lines
718 B
TypeScript
30 lines
718 B
TypeScript
import {en} from "./languages/en.ts";
|
|
import {zh_TW} from "./languages/zh_TW.ts";
|
|
import {zh_CN} from "./languages/zh_CN.ts";
|
|
import type I18nKey from "./i18nKey.ts";
|
|
import {siteConfig} from "../config.ts";
|
|
|
|
export type Translation = {
|
|
[K in I18nKey]: string;
|
|
}
|
|
|
|
const defaultTranslation = en;
|
|
|
|
const map: { [key: string]: Translation } = {
|
|
"en": en,
|
|
"en_us": en,
|
|
"en_gb": en,
|
|
"en_au": en,
|
|
"zh_cn": zh_CN,
|
|
"zh_tw": zh_TW,
|
|
}
|
|
|
|
export function getTranslation(lang: string): Translation {
|
|
lang = lang.toLowerCase();
|
|
return map[lang] || defaultTranslation;
|
|
}
|
|
|
|
export function i18n(key: I18nKey): string {
|
|
const lang = siteConfig.lang || "en";
|
|
return getTranslation(lang)[key];
|
|
} |