"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const Model = require("../model/Model.js");
const env = require("../../../../../zrender@5.4.4/node_modules/zrender/lib/core/env.js");
const langEN = require("../i18n/langEN.js");
const langZH = require("../i18n/langZH.js");
const util = require("../../../../../zrender@5.4.4/node_modules/zrender/lib/core/util.js");
var LOCALE_ZH = "ZH";
var LOCALE_EN = "EN";
var DEFAULT_LOCALE = LOCALE_EN;
var localeStorage = {};
var localeModels = {};
var SYSTEM_LANG = !env.default.domSupported ? DEFAULT_LOCALE : function() {
  var langStr = (
    /* eslint-disable-next-line */
    (document.documentElement.lang || navigator.language || navigator.browserLanguage).toUpperCase()
  );
  return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE;
}();
function registerLocale(locale, localeObj) {
  locale = locale.toUpperCase();
  localeModels[locale] = new Model.default(localeObj);
  localeStorage[locale] = localeObj;
}
function createLocaleObject(locale) {
  if (util.isString(locale)) {
    var localeObj = localeStorage[locale.toUpperCase()] || {};
    if (locale === LOCALE_ZH || locale === LOCALE_EN) {
      return util.clone(localeObj);
    } else {
      return util.merge(util.clone(localeObj), util.clone(localeStorage[DEFAULT_LOCALE]), false);
    }
  } else {
    return util.merge(util.clone(locale), util.clone(localeStorage[DEFAULT_LOCALE]), false);
  }
}
function getLocaleModel(lang) {
  return localeModels[lang];
}
function getDefaultLocaleModel() {
  return localeModels[DEFAULT_LOCALE];
}
registerLocale(LOCALE_EN, langEN.default);
registerLocale(LOCALE_ZH, langZH.default);
exports.SYSTEM_LANG = SYSTEM_LANG;
exports.createLocaleObject = createLocaleObject;
exports.getDefaultLocaleModel = getDefaultLocaleModel;
exports.getLocaleModel = getLocaleModel;
exports.registerLocale = registerLocale;
