function internationalizeConfigAux (obj, userLocale) {
  const { i18n } = obj || {}
  if (i18n) {
    const translatedObj = removeAI(i18n[userLocale] || {})
    _.merge(obj, translatedObj)
    return
  }

  if (!obj) return
  for (const values of Object.values(obj)) {
    if (Array.isArray(values)) {
      for (const arrayVal of values) {
        internationalizeConfigAux(arrayVal, userLocale)
      }
    } else if (typeof values === 'object') {
      internationalizeConfigAux(values, userLocale)
    }
  }
}
This replaces properties recursively with the i18n properties.
It's a very naive implementation and should be replaced with the
i18n function in utils.

The translation falls back to English but doesn't fall sideways or
fallback gracefully from Traditional to Simplified Chinese.