export type I18NProps = { [key: string]: { zh: string; en: string; }; }; export const useI18N = <T extends I18NProps>(options: T) => { const locale = useLocale(); // 语言信息 const isCN = /^zh|cn$/i.test(locale); return (key: keyof T) => options[key][isCN ? 'zh' : 'en']; };
const App = () => { const i18n = useI18N({ placeholder: { zh: '搜索组件...', en: 'search component...', }, }) return <div>{i18n('placeholder')}</div> }