/** * useAppStrings — 通用 App i18n hook * * 用法: * import { strings } from '../res/strings'; * import { stringsEn } from '../res/strings.en'; * const s = useAppStrings(strings, stringsEn); * {s.home} // 中文返回 '首页',英文返回 'Home' */ import { type Locale, useLocale } from './locale'; export function resolveAppStrings>( base: T, en?: Partial>, locale: Locale = 'zh-Hans', ): T { if (!en || locale === 'zh-Hans') return base; return { ...base, ...en } as T; } export function useAppStrings>( base: T, en?: Partial>, localeOverride?: Locale, ): T { const osLocale = useLocale(); const locale = localeOverride ?? osLocale; return resolveAppStrings(base, en, locale); }