1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-25 12:52:33 +02:00
metamask-extension/ui/app/helpers/higher-order-components/i18n-provider.js
Whymarrh Whitby 92971d3c87
Migrate codebase to use ESM (#7730)
* Update eslint-plugin-import version

* Convert JS files to use ESM

* Update ESLint rules to check imports

* Fix test:unit:global command env

* Cleanup mock-dev script
2020-01-09 00:04:58 -03:30

67 lines
1.8 KiB
JavaScript

import { Component } from 'react'
import { connect } from 'react-redux'
import PropTypes from 'prop-types'
import { withRouter } from 'react-router-dom'
import { compose } from 'recompose'
import { getMessage } from '../utils/i18n-helper'
class I18nProvider extends Component {
tOrDefault = (key, defaultValue, ...args) => {
if (!key) {
return defaultValue
}
const { localeMessages: { current, en } = {}, currentLocale } = this.props
return getMessage(currentLocale, current, key, ...args) || getMessage(currentLocale, en, key, ...args) || defaultValue
}
getChildContext () {
const { localeMessages, currentLocale } = this.props
const { current, en } = localeMessages
return {
/**
* Returns a localized message for the given key
* @param {string} key The message key
* @param {string[]} args A list of message substitution replacements
* @return {string|undefined|null} The localized message if available
*/
t (key, ...args) {
return getMessage(currentLocale, current, key, ...args) || getMessage(currentLocale, en, key, ...args) || `[${key}]`
},
tOrDefault: this.tOrDefault,
tOrKey: (key, ...args) => {
return this.tOrDefault(key, key, ...args)
},
}
}
render () {
return this.props.children
}
}
I18nProvider.propTypes = {
localeMessages: PropTypes.object,
currentLocale: PropTypes.string,
children: PropTypes.object,
}
I18nProvider.childContextTypes = {
t: PropTypes.func,
tOrDefault: PropTypes.func,
tOrKey: PropTypes.func,
}
const mapStateToProps = state => {
const { localeMessages, metamask: { currentLocale } } = state
return {
currentLocale,
localeMessages,
}
}
export default compose(
withRouter,
connect(mapStateToProps)
)(I18nProvider)