docs: function BabelFish(defaultLocale) {
    if (!(this instanceof BabelFish)) { return new BabelFish(defaultLocale); }
  
    this._defaultLocale = defaultLocale ? String(defaultLocale) : GENERIC_LOCALE;
  
    // hash of locale => [ fallback1, fallback2, ... ] pairs
    this._fallbacks = {};
  
    // fallback cache for each phrase
    //
    // {
    //   locale_key: fallback_key
    // }
    //
    // fallback_key can be null if search failed
    //
    this._fallbacks_cache = {};
  
    // storage of compiled translations
    //
    // {
    //   locale + @#$ + phrase_key: {
    //     locale:      locale name - can be different for fallbacks
    //     translation: original translation phrase or data variable/object
    //     raw:         true/false - does translation contain plain data or
    //                  string to compile
    //     compiled:    copiled translation fn or plain string
    //   }
    //   ...
    // }
    //
    this._storage = {};
  
    // cache for complex plural parts (with params)
    //
    // {
    //   language: new BabelFish(language)
    // }
    //
    this._plurals_cache = {};
  }