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 = { zh: 'zh-CN', en: 'en', ja: 'ja', fr: 'fr', }; export const langLabels: Record = { 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; }