{"version":3,"sources":["localization.js"],"names":["localization","L","localizationDict","key","ext","localize","apply","arguments","update","obj","_localize","dict","args","hasOwnProperty","length","params","slice","replace","s","extName","res","Array","prototype","call","this","extensionName","setExtensionName","name"],"mappings":"AACA,GAAIA,cAAcC,GAClB,WACE,GAAIC,KAGJD,GAAI,SAAUE,EAAKC,GACjB,MAAOJ,cAAaK,SAASC,MAAMN,aAAcO,YAGnDP,cAEEQ,OAAQ,SAAUC,GAChB,IAAK,GAAIN,KAAOM,GACdP,EAAiBC,GAAOM,EAAIN,IAKhCE,SAAU,SAAUF,EAAKC,GAEvB,QAASM,GAAUC,EAAMC,GACvB,GAAID,GAAQA,EAAKE,eAAeV,GAAM,CACpC,GAAmB,GAAfS,EAAKE,OACP,MAAOH,GAAKR,EAGZ,IAAIY,GAASH,EAAKI,MAAM,EAGxB,OAFwB,gBAAbD,GAAO,KAChBA,EAASA,EAAO,IACXJ,EAAKR,GAAKc,QAAQ,gBAAiB,SAAUC,EAAGf,GACrD,MAAIA,KAAOY,GACFA,EAAOZ,GAEPe,IAKb,MAAO,MAGX,GAEIC,GAFAC,EAAM,KACNR,EAAOS,MAAMC,UAAUN,MAAMO,KAAKhB,UAEnBY,GAAR,MAAPf,EAAyBoB,KAAKC,cACnBrB,EAGXe,IAASC,EAAMV,EAAUR,EAAiBiB,GAAUP,GAGxD,KAAK,GAAIO,KAAWjB,GAElB,GADAkB,EAAMV,EAAUR,EAAiBiB,GAAUP,GAC/B,OAARQ,EAAc,KAOpB,OAHY,QAARA,IAAcA,EAAMV,EAAUR,EAAkC,gBAAGU,IAE3D,OAARQ,IAAcA,EAAMjB,GACjBiB,GAGTM,iBAAkB,SAAUC,GAC1BH,KAAKC,cAAgBE","file":"localization.js","sourcesContent":["// Работа с локализацией.\nvar localization, L;\n(function () {\n var localizationDict = {};\n\n // shortcut для localization.localize\n L = function (key, ext) {\n return localization.localize.apply(localization, arguments);\n };\n\n localization = {\n // Добавляет словарь локализации в общий словарь.\n update: function (obj) {\n for (var key in obj) {\n localizationDict[key] = obj[key];\n }\n },\n // Получает локализованную строку по ключу. Если строка не найдена, возвращает ключ.\n // В качестве дополнительных параметров принимает строки для замены плейсхолдеров {0}, {1}, ...\n localize: function (key, ext) {\n\n function _localize(dict, args) {\n if (dict && dict.hasOwnProperty(key)) {\n if (args.length == 1) {\n return dict[key];\n }\n else {\n var params = args.slice(1);\n if (typeof params[0] == \"object\")\n params = params[0];\n return dict[key].replace(/\\{([^{}]+)\\}/g, function (s, key) {\n if (key in params)\n return params[key];\n else\n return s;\n });\n }\n }\n else\n return null;\n }\n\n var res = null;\n var args = Array.prototype.slice.call(arguments);\n var extName;\n if (ext == null) { extName = this.extensionName; }\n else extName = ext;\n\n // Проверяем текущее расширение.\n if (extName) res = _localize(localizationDict[extName], args);\n\n // Если не нашли, пробуем найти в других расширениях.\n for (var extName in localizationDict) {\n res = _localize(localizationDict[extName], args);\n if (res !== null) break;\n }\n\n // Если не нашли, пробуем найти в DefaultSettings\n if (res === null) res = _localize(localizationDict['DefaultSettings'], args);\n\n if (res === null) res = key;\n return res;\n },\n\n setExtensionName: function (name) {\n this.extensionName = name;\n }\n };\n})();\n"]}