Fallback to English and then the key for I18nProvider#t

feature/default_network_editable
Whymarrh Whitby 6 years ago
parent 2526f8a1d8
commit 94489b544a
  1. 5
      ui/app/i18n-provider.js
  2. 22
      ui/i18n-helper.js

@ -8,8 +8,11 @@ const t = require('../i18n-helper').getMessage
class I18nProvider extends Component { class I18nProvider extends Component {
getChildContext () { getChildContext () {
const { localeMessages } = this.props const { localeMessages } = this.props
const { current, en } = localeMessages
return { return {
t: t.bind(null, localeMessages), t (key, ...args) {
return t(current, key, ...args) || t(en, key, ...args) || `[${key}]`
},
} }
} }

@ -1,20 +1,22 @@
// cross-browser connection to extension i18n API // cross-browser connection to extension i18n API
const log = require('loglevel') const log = require('loglevel')
/**
* Returns a localized message for the given key
* @param {object} locale The locale
* @param {string} key The message key
* @param {string[]} substitutions A list of message substitution replacements
* @return {null|string} The localized message
*/
const getMessage = (locale, key, substitutions) => { const getMessage = (locale, key, substitutions) => {
// check locale is loaded
if (!locale) { if (!locale) {
// throw new Error('Translator - has not loaded a locale yet.') return null
return ''
} }
// check entry is present if (!locale[key]) {
const { current, en } = locale log.error(`Translator - Unable to find value for key "${key}"`)
const entry = current[key] || en[key] return null
if (!entry) {
// throw new Error(`Translator - Unable to find value for "${key}"`)
log.error(`Translator - Unable to find value for "${key}"`)
return `[${key}]`
} }
const entry = locale[key]
let phrase = entry.message let phrase = entry.message
// perform substitutions // perform substitutions
if (substitutions && substitutions.length) { if (substitutions && substitutions.length) {

Loading…
Cancel
Save