diff options
Diffstat (limited to 'src/I18n.js')
-rw-r--r-- | src/I18n.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/I18n.js b/src/I18n.js new file mode 100644 index 000000000..ae3ba2fa9 --- /dev/null +++ b/src/I18n.js | |||
@@ -0,0 +1,28 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { inject, observer } from 'mobx-react'; | ||
4 | import { IntlProvider } from 'react-intl'; | ||
5 | |||
6 | import { oneOrManyChildElements } from './prop-types'; | ||
7 | import translations from './i18n/translations'; | ||
8 | import UserStore from './stores/UserStore'; | ||
9 | |||
10 | @inject('stores') @observer | ||
11 | export default class I18N extends Component { | ||
12 | render() { | ||
13 | const { stores, children } = this.props; | ||
14 | const { locale } = stores.app; | ||
15 | return ( | ||
16 | <IntlProvider {...{ locale, key: locale, messages: translations[locale] }}> | ||
17 | {children} | ||
18 | </IntlProvider> | ||
19 | ); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | I18N.wrappedComponent.propTypes = { | ||
24 | stores: PropTypes.shape({ | ||
25 | user: PropTypes.instanceOf(UserStore).isRequired, | ||
26 | }).isRequired, | ||
27 | children: oneOrManyChildElements.isRequired, | ||
28 | }; | ||