function deepMerge (dst, src) {
  Object.keys(src).forEach(key => {
    const _s = Util.typeOf(src[key])
    const _t = Util.typeOf(dst[key])
    if (_s === 'Array') {
      if (_t !== 'Array') {
        dst[key] = []
      }
      dst[key].push(...src[key])
    } else if (_s === 'Object') {
      if (_t !== 'Object') {
        dst[key] = {}
      }
      deepMerge(dst[key], src[key])
    } else {
      dst[key] = src[key]
    }
  })
  return dst
}
@typedef { {
 lang: { [propName: string]: IXGI18nText },
 langKeys: Array<string>, // list of all currently supported languages
 textKeys: { [propName: string]: string } // list of all currently supported texts
} } IXGI18n