import React from 'react';
import hoistStatics from 'hoist-non-react-statics';
import invariant from 'tiny-invariant';
import { ConfigProvider } from 'antd4';
import enUSText from './en-US';
import zhCNText from './zh-CN';
import enUS from 'antd4/lib/locale/en_US';
import zhCN from 'antd4/lib/locale/zh_CN';
interface Props {
children: React.ReactNode;
locale: string;
}
interface FMProps {
id: string;
defaultMessage: string;
}
export const LocalContext = React.createContext('zh-CN');
export const LocaleProvider = (props: Props) => {
const { children, locale = 'zh-CN', ...restProps } = props;
if (window) {
window.localStorage.setItem('umi_locale', locale);
}
return (
{children}
);
};
/**
* 获取当前选择的语言
* @returns string
*/
export const getLocale = () => {
const lang =
typeof localStorage !== 'undefined'
? window.localStorage.getItem('umi_locale')
: '';
// support baseNavigator, default true
return lang || 'zh-CN';
};
export const FormattedMessage = (props: FMProps) => {
const { id, defaultMessage } = props;
const locale = window.localStorage.getItem('umi_locale') || 'zh-CN';
const t: any = locale === 'zh-CN' ? zhCNText : enUSText;
return t?.[id] || defaultMessage || '';
};
export const FM = (props: FMProps) => {
const { id, defaultMessage } = props;
return (
{(locale) => {
const t: any = locale === 'zh-CN' ? zhCNText : enUSText;
return <>{t?.[id] || defaultMessage}>;
}}
);
};