{"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":["// Работа с локализацией.\r\nvar localization, L;\r\n(function () {\r\n var localizationDict = {};\r\n\r\n // shortcut для localization.localize\r\n L = function (key, ext) {\r\n return localization.localize.apply(localization, arguments);\r\n };\r\n\r\n localization = {\r\n // Добавляет словарь локализации в общий словарь.\r\n update: function (obj) {\r\n for (var key in obj) {\r\n localizationDict[key] = obj[key];\r\n }\r\n },\r\n // Получает локализованную строку по ключу. Если строка не найдена, возвращает ключ.\r\n // В качестве дополнительных параметров принимает строки для замены плейсхолдеров {0}, {1}, ...\r\n localize: function (key, ext) {\r\n\r\n function _localize(dict, args) {\r\n if (dict && dict.hasOwnProperty(key)) {\r\n if (args.length == 1) {\r\n return dict[key];\r\n }\r\n else {\r\n var params = args.slice(1);\r\n if (typeof params[0] == \"object\")\r\n params = params[0];\r\n return dict[key].replace(/\\{([^{}]+)\\}/g, function (s, key) {\r\n if (key in params)\r\n return params[key];\r\n else\r\n return s;\r\n });\r\n }\r\n }\r\n else\r\n return null;\r\n }\r\n\r\n var res = null;\r\n var args = Array.prototype.slice.call(arguments);\r\n var extName;\r\n if (ext == null) { extName = this.extensionName; }\r\n else extName = ext;\r\n\r\n // Проверяем текущее расширение.\r\n if (extName) res = _localize(localizationDict[extName], args);\r\n\r\n // Если не нашли, пробуем найти в других расширениях.\r\n for (var extName in localizationDict) {\r\n res = _localize(localizationDict[extName], args);\r\n if (res !== null) break;\r\n }\r\n\r\n // Если не нашли, пробуем найти в DefaultSettings\r\n if (res === null) res = _localize(localizationDict['DefaultSettings'], args);\r\n\r\n if (res === null) res = key;\r\n return res;\r\n },\r\n\r\n setExtensionName: function (name) {\r\n this.extensionName = name;\r\n }\r\n };\r\n})();\r\n"]}