{"version":3,"sources":["localization.js"],"names":["localization","L","key","ext","localize","apply","arguments","obj","update","_localize","dict","args","hasOwnProperty","params","slice","replace","s","extName","res","Array","prototype","call","localizationDict","setExtensionName","extensionName","name","this"],"mappings":"sNACIA,aAAcC,GADlB,WACA,GAAID,KAKFC,GAAI,SAAUC,EAAKC,GADnB,MAAAH,cAAAI,SAAAC,MAAAL,aAAAM,YAGCN,cAEDA,OAAAA,SAAeO,GACb,IAAA,GAAAL,KAAAK,GACAC,EAAQN,GAAAK,EAAeL,IAKvBE,SAAA,SAAAF,EAAAC,GAEAC,QAAUK,GAAAC,EAAAC,GAGN,GAAID,GAAQA,EAAKE,eAAeV,GAAM,CADxC,GAAA,GAAAS,EAASF,OACHC,MAAAA,GAAQA,EACV,IAAAG,GAGKF,EAAAG,MAAA,EAIH,OAHwB,UAApBD,QAAAA,EAAcC,MAClBD,EAAIA,EAAOA,IAEJH,EAAKR,GAAKa,QAAQ,gBAAiB,SAAUC,EAAGd,GACrD,MAAIA,KAAOW,GADbA,EAAAX,GASKc,IAKPC,MAAJ,MACkD,GAGlDA,GAHAC,EACKD,KAHDN,EAAOQ,MAAMC,UAAUN,MAAMO,KAAKf,UAMnBG,GAAnB,MAAIQ,EAAyBK,KAAAA,cAHdnB,EAObe,IAAMT,EAAUa,EAAAA,EAA2BX,GAA3CA,GADF,KAAK,GAAIM,KAAWK,GAMpB,GADAJ,EAAAT,EAAAa,EAAAL,GAAAN,GACY,OAARO,EAAcA,KAOlB,OAvDW,QAAAA,IAAAA,EAAAT,EAAAa,EAAA,gBAAAX,IAsDbY,OAAAA,IAAkBL,EAAAhB,GACXsB,GA/DXD,iBAAA,SAAAE,GA+DMC,KAAKF,cAAgBC","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"]}