Files
OpenFlare/frontend/i18n/format.ts
T
ryan 1625cfb2fb feat(frontend): add next-intl bilingual i18n for core paths
Wire next-intl without locale routes, add zh-CN/en catalogs, language
switcher, and migrate layout/auth/settings UI copy. Document i18n rules
in AGENTS.md and keep static export builds working.
2026-07-24 16:25:41 +08:00

40 lines
915 B
TypeScript

import type { AppLocale } from './config';
import { defaultLocale } from './config';
const localeToIntl: Record<AppLocale, string> = {
'zh-CN': 'zh-CN',
en: 'en-US',
};
export function formatDateTime(
dateStr: string | Date,
locale: AppLocale = defaultLocale,
timeZone = 'Asia/Shanghai',
): string {
try {
const date = typeof dateStr === 'string' ? new Date(dateStr) : dateStr;
return new Intl.DateTimeFormat(localeToIntl[locale] ?? locale, {
timeZone,
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
hour12: false,
}).format(date);
} catch {
return String(dateStr);
}
}
export function formatNumber(
value: number,
locale: AppLocale = defaultLocale,
): string {
try {
return new Intl.NumberFormat(localeToIntl[locale] ?? locale).format(value);
} catch {
return String(value);
}
}