import React, { Component, createContext, useMemo } from 'react'; import PropTypes from 'prop-types'; import { getMessage } from '../ui/helpers/utils/i18n-helper'; import { I18nContext } from '../ui/contexts/i18n'; export { I18nContext }; export const I18nProvider = (props) => { const { currentLocale, current, en } = props; const t = useMemo(() => { return (key, ...args) => getMessage(currentLocale, current, key, ...args) || getMessage(currentLocale, en, key, ...args); }, [currentLocale, current, en]); return ( {props.children} ); }; I18nProvider.propTypes = { currentLocale: PropTypes.string, current: PropTypes.object, en: PropTypes.object, children: PropTypes.node, }; I18nProvider.defaultProps = { children: undefined, }; export class LegacyI18nProvider extends Component { static propTypes = { children: PropTypes.node, }; static defaultProps = { children: undefined, }; static contextType = I18nContext; static childContextTypes = { t: PropTypes.func, }; getChildContext() { return { t: this.context, }; } render() { return this.props.children; } }