import * as React from 'react'; import type { ValidateMessages } from 'rc-field-form/lib/interface'; import { devUseWarning } from '../_util/warning'; import type { PickerLocale as DatePickerLocale } from '../date-picker/generatePicker'; import type { TransferLocale as TransferLocaleForEmpty } from '../empty'; import type { ModalLocale } from '../modal/locale'; import { changeConfirmLocale } from '../modal/locale'; import type { PaginationLocale } from '../pagination/Pagination'; import type { PopconfirmLocale } from '../popconfirm/PurePanel'; import type { TableLocale } from '../table/interface'; import type { TourLocale } from '../tour/interface'; import type { TransferLocale } from '../transfer'; import type { UploadLocale } from '../upload/interface'; import type { LocaleContextProps } from './context'; import LocaleContext from './context'; export { default as useLocale } from './useLocale'; export const ANT_MARK = 'internalMark'; export interface Locale { locale: string; Pagination?: PaginationLocale; DatePicker?: DatePickerLocale; TimePicker?: Record; Calendar?: Record; Table?: TableLocale; Modal?: ModalLocale; Tour?: TourLocale; Popconfirm?: PopconfirmLocale; Transfer?: TransferLocale; Select?: Record; Upload?: UploadLocale; Empty?: TransferLocaleForEmpty; global?: Record; Icon?: Record; Text?: { edit?: any; copy?: any; copied?: any; expand?: any; collapse?: any; }; Form?: { optional?: string; defaultValidateMessages: ValidateMessages; }; Image?: { preview: string; }; QRCode?: { expired?: string; refresh?: string; scanned?: string; }; ColorPicker?: { presetEmpty: string; transparent: string; singleColor: string; gradientColor: string; }; } export interface LocaleProviderProps { locale: Locale; children?: React.ReactNode; /** @internal */ _ANT_MARK__?: string; } const LocaleProvider: React.FC = (props) => { const { locale = {} as Locale, children, _ANT_MARK__ } = props; if (process.env.NODE_ENV !== 'production') { const warning = devUseWarning('LocaleProvider'); warning( _ANT_MARK__ === ANT_MARK, 'deprecated', '`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead: http://u.ant.design/locale', ); } React.useEffect(() => { const clearLocale = changeConfirmLocale(locale?.Modal); return clearLocale; }, [locale]); const getMemoizedContextValue = React.useMemo( () => ({ ...locale, exist: true }), [locale], ); return ( {children} ); }; if (process.env.NODE_ENV !== 'production') { LocaleProvider.displayName = 'LocaleProvider'; } export default LocaleProvider;