admin-on-rest-fr05t1k
Version:
A frontend Framework for building admin applications on top of REST services, using ES6, React and Material UI
35 lines (27 loc) • 994 B
JavaScript
import { Children, PropTypes } from 'react';
import Polyglot from 'node-polyglot';
import { connect } from 'react-redux';
import { compose, withContext } from 'recompose';
import defaultMessages from './messages';
const withI18nContext = withContext({
translate: PropTypes.func.isRequired,
locale: PropTypes.string.isRequired,
}, ({ locale, messages = {} }) => {
const userMessages = messages[locale] || {};
const polyglot = new Polyglot({
locale,
phrases: { ...defaultMessages, ...userMessages },
});
return {
locale,
translate: polyglot.t.bind(polyglot),
};
});
const TranslationProvider = ({ children }) => Children.only(children);
TranslationProvider.propTypes = {
locale: PropTypes.string.isRequired,
messages: PropTypes.object,
children: PropTypes.element,
};
const mapStateToProps = state => ({ locale: state.locale });
export default compose(connect(mapStateToProps), withI18nContext)(TranslationProvider);