UNPKG

glass-app-manager

Version:

Informatica's Glass Framework CLI for bootstrapping

46 lines (32 loc) 1.26 kB
// @flow import * as React from "react"; import hoist from "hoist-non-react-statics"; import i18n from "../../utils/i18n"; import type { TranslationContextType } from "./translationTypes"; const DEFAULT_CONFIG: TranslationContextType = { locale: "en", fallbackLanguages: ["en"], }; const translationProvider = i18n.init(); export const TranslationContext = React.createContext<TranslationContextType>({}); export const t = translationProvider.t.bind(translationProvider); const WrapComponent = (Component: React.AbstractComponent<any>, Context: any, config: TranslationContextType) => ( props: any ) => ( <Context.Provider value={config}> <Component {...props} /> </Context.Provider> ); const withTranslation = (config: TranslationContextType) => { translationProvider.setLocale(config.locale); function withTranslation(BaseComponent: React.AbstractComponent<any>) { const WrappedComponent = WrapComponent(BaseComponent, TranslationContext, { ...DEFAULT_CONFIG, ...config, }); hoist(WrappedComponent, BaseComponent); return WrappedComponent; } return withTranslation; }; export default withTranslation;