!function (e, n, t, o){ "use strict"; e.module("ngLocalize.Version", [] ).constant("localeVer", "1.6.0"), e.module("ngLocalize", ["ngSanitize", "ngLocalize.Config", "ngLocalize.Events", "ngLocalize.InstalledLanguages"] ), e.module("ngLocalize.InstalledLanguages", [] ).value("localeSupported", ["en-US"] ).value("localeFallbacks", { en: "en-US"} ), e.module("ngLocalize").service("locale", ["$injector", "$http", "$q", "$log", "$rootScope", "$window", "localeConf", "localeEvents", "localeSupported", "localeFallbacks", function (n, o, r, a, i, l, c, u, s, f){ function g(e){ var n, t; if (c.allowNestedJson) { var o = e? e.split("."): [] ; n = _AN_Read_length("length", o) > 1? o.slice(1): "", t = _AN_Read_length("length", o) > 0? o[0].split(K): [] , t.push(_AN_Read_length("length", o) > 1? o[1]: ""); } else t = e? e.split("/").join(".").split("."): [] , n = _AN_Read_length("length", t) > 1? t[_AN_Read_length("length", t) - 1]: ""; return { key: n, path: t} ; } function d(e){ return e && _AN_Read_length("length", e) && P.test(e); } function h(e){ var n = g(e).path, t = ""; return _AN_Read_length("length", n) > 1 && (t = n.slice(0, -1).join(K)), t; } function v(e){ return g(e).key; } function p(e){ var n, t = null , o = g(e).path; if (_AN_Read_length("length", o) > 1) for (t = x, n = 0; n < _AN_Read_length("length", o) - 1; n++ ){ if (!t[o[n]]) { t = null ; break ; } t = t[o[n]]; } return t; } function $(e){ return (Object.isFrozen || function (e){ return e && e.$$frozen; } )(e); } function m(e){ return (Object.freeze || function (e){ e && (e.$$frozen = true ); } )(e); } function L(e, n, t){ return _AN_Call_replace("replace", e, new RegExp((_AN_Call_replace("replace", n, /[.*+?^${}()|[\]\\]/g, "\\$&")), "g"), t); } function S(n){ var t, r, l, s = g(n).path, f = x, d = C, v = c.basePath + "/" + d; if (_AN_Read_length("length", s) > 1) { for (l = 0; l < _AN_Read_length("length", s) - 1; l++ )r = s[l], f[r] || (f[r] = { } ), t = f, f = f[r], v += "/" + r; $(f) && (f = e.extend({ } , f)), f._loading || (f._loading = true , v += c.fileExtension, o.get(v).then(function (e){ var o, a = h(n), l = e.data; for (o in l)l.hasOwnProperty(o) && (f[o] = l[o]); delete f._loading, t[r] = m(f), f = null , i.$broadcast(u.resourceUpdates, { locale: d, path: a, bundle: t[r]} ), U[a] && U[a].resolve(a); } , function (e){ var t = h(n); a.error("[localizationService] Failed to load: " + v), delete f._loading, U[t] && U[t].reject(e.data); } )); } } function b(e){ var n, t; return e = e || c.langFile, t = e + "._LOOKUP_", n = p(t), U[e] || (U[e] = r.defer()), n && !n._loading? U[e].resolve(e): n || S(t), U[e].promise; } function w(n){ var t, o, a; if (e.isString(n)) t = n.split(","); else { if (!e.isArray(n)) throw new Error("locale.ready requires either an Array or comma-separated list.") t = n; } return _AN_Read_length("length", t) > 1? (a = [] , t.forEach(function (e){ a.push(b(e)); } ), o = r.all(a)): o = b(n), o; } function E(n, t){ var o = n, r = 0; return t && (e.isArray(t)? e.forEach(t, function (e, n){ o = L(o, "%" + (n + 1), e), o = L(o, "{" + (n + 1) + "}", e); } ): e.forEach(t, function (e, n){ ++r, o = L(o, "{" + n + "}", e), o = L(o, "%" + n, e), o = L(o, "%" + r, e), o = L(o, "{" + r + "}", e); } )), o = _AN_Call_replace("replace", o, /\n/g, "
"); } function z(n, t){ var o, r, i, l = "", u = false ; if (e.isString(n) && !t && n.indexOf(c.delimiter) !== -1 && (i = n.split(c.delimiter), n = i[0], t = e.fromJson(i[1])), u = d(n)) if (e.isObject(t) || (t = [t] ), o = p(n), o && !o._loading) { if (r = v(n), c.allowNestedJson) { for (var s = 0; s < _AN_Read_length("length", r) - 1; s++ ){ if (!o[r[s]]) { o = null ; break ; } o = o[r[s]]; } r = r[_AN_Read_length("length", r) - 1]; } o[r]? e.isString(o[r])? l = E(o[r], t): (a.info("[localizationService] Key is not a string: " + n + ". Is it a nested object?"), l = "%%KEY_NOT_STRING%%"): (l = "%%KEY_NOT_FOUND%%", l = "%%KEY_NOT_FOUND%%"); } else o || S(n); else l = n; return l; } function y(e){ e = e.split("-")[0], T.attr("lang", e); } function k(n){ var t = null ; if (n && _AN_Read_length("length", n) && (s.forEach(function (e){ if (0 === e.indexOf(n)) return void (t = e); } ), !t)) { var o = f[n.split("-")[0]]; e.isUndefined(o) || (t = o); } return t || c.defaultLocale; } function O(n){ var t; e.isString(n) && _AN_Read_length("length", n)? (n = n.trim(), t = k(n)): t = c.defaultLocale, t !== C && (x = { } , U = { } , C = t, y(t), i.$broadcast(u.localeChanges, C), j && j.put(c.cookieName, t)); } function _(){ return C; } function A(){ var n, t, o = l.navigator, r = ["language", "browserLanguage", "systemLanguage", "userLanguage"] ; if (e.isArray(o.languages)) for (n = 0; n < _AN_Read_length("length", o.languages); n++ )if (t = o.languages[n]) return t; for (n = 0; n < _AN_Read_length("length", r); n++ )if (t = o[r[n]]) return t; return null ; } function N(){ O(j && j.get(c.cookieName)? j.get(c.cookieName): A()); } var C, U, x, j, P = c.validTokens || new RegExp("^([\\w-]+\\/)*([\\w-]+\\.)+([\\w\\s-])+\\w(:.*)?$"), T = e.element(t.body).parent(), K = c.allowNestedJson? "/": "."; return c.persistSelection && n.has("$cookieStore") && (j = n.get("$cookieStore")), N(), { ready: w, isToken: d, getPath: h, getKey: v, setLocale: O, getLocale: _, getString: z, getPreferredBrowserLanguage: A} ; } ] ), e.module("ngLocalize").filter("i18n", ["locale", function (e){ var n = function (n, t){ return e.getString(n, t); } ; return n.$stateful = true , n; } ] ), e.module("ngLocalize.Events", [] ).constant("localeEvents", { resourceUpdates: "ngLocalizeResourcesUpdated", localeChanges: "ngLocalizeLocaleChanged"} ), e.module("ngLocalize").directive("i18n", ["$sce", "locale", "localeEvents", "localeConf", function (n, t, o, r){ function a(e, t){ t !== e.html() && e.html(n.getTrustedHtml(t)); } function i(e, n, o){ t.isToken(n)? t.ready(t.getPath(n)).then(function (){ a(e, t.getString(n, o)); } ): a(e, n); } return function (n, t, a){ var l; a.$observe("i18n", function (e, n){ e && e !== n && i(t, e, l); } ), e.forEach(a.$attr, function (e, n){ r.observableAttrs.test(e) && a.$observe(n, function (e){ !e && l && l[n] || (l = l || { } , l[n] = a[n], i(t, a.i18n, l)); } ); } ), n.$on(o.resourceUpdates, function (){ i(t, a.i18n, l); } ), n.$on(o.localeChanges, function (){ i(t, a.i18n, l); } ); } ; } ] ).directive("i18nAttr", ["$rootScope", "locale", "localeEvents", function (n, t, o){ function r(e, n, t){ e.$set(e.$normalize(n), t); } function a(e, n, o){ var a = { } ; return function (n){ var i, l = e.$eval(n), c = [] ; for (var u in l)i = l[u], t.isToken(i) && c.indexOf(t.getPath(i)) === -1 && c.push(t.getPath(i)); t.ready(c).then(function (){ var e = ""; for (var n in l)i = l[n], e = t.getString(i), a[n] !== e && (a[n] = e, r(o, n, e)); } ); } ; } return { priority: 1000, compile: function (t, i){ return e.forEach(n.$eval(i.i18nAttr), function (e, n){ r(i, n, e || "..."); } ), function (e, n, t){ var r = a(e, n, t); t.$observe("i18nAttr", function (e){ e && r(e); } ), e.$on(o.resourceUpdates, function (){ r(t.i18nAttr); } ), e.$on(o.localeChanges, function (){ r(t.i18nAttr); } ); } ; } } ; } ] ), e.module("ngLocalize.Config", [] ).value("localeConf", { basePath: "languages", defaultLocale: "en-US", sharedDictionary: "common", fileExtension: ".lang.json", persistSelection: true , cookieName: "COOKIE_LOCALE_LANG", observableAttrs: new RegExp("^data-(?!ng-|i18n)"), delimiter: "::", validTokens: new RegExp("^([\\w-]+\\/)*([\\w-]+\\.)+([\\w\\s-])+\\w(:.*)?$"), allowNestedJson: false } ); } (this.angular, this, this.document);