Files
fiveq-website-2026/src/i18n/locales.ts
T

38 lines
1.0 KiB
TypeScript

export type Lang = 'zh' | 'en' | 'ja' | 'fr';
export const LANGS: Lang[] = ['zh', 'en', 'ja', 'fr'];
export const DEFAULT_LANG: Lang = 'zh';
export const htmlLang: Record<Lang, string> = {
zh: 'zh-CN',
en: 'en',
ja: 'ja',
fr: 'fr',
};
export const langLabels: Record<Lang, string> = {
zh: '中文',
en: 'English',
ja: '日本語',
fr: 'Français',
};
export function isLang(value: string | undefined): value is Lang {
return value !== undefined && (LANGS as string[]).includes(value);
}
/** 站内路径(不含语言前缀),首页为空字符串 */
export type RouteKey = '' | 'teaching-philosophy' | 'curriculum' | 'faculty' | 'about';
export function hrefFor(lang: Lang, segment: RouteKey): string {
const prefix = lang === DEFAULT_LANG ? '' : `/${lang}`;
if (!segment) return prefix || '/';
return `${prefix}/${segment}`;
}
/** 从 [...lang] rest 参数解析语言,undefined 时返回默认语言 */
export function resolveLang(param: string | undefined): Lang {
return isLang(param) ? param : DEFAULT_LANG;
}