JSFiddle - React, Tailwind, and code Playground
JavaScript
lang=(function init_lang(){
var BODY=document.body, //тело документа
LANG_HASH={}, //собственно, результирующий хэш
LANG_HASH_LIST=[], //список загружаемых словарей
LANG_HASH_INDEX={}, //список имён словарей
LANG_HASH_USER={}, //пользовательский словарь
LANG_HASH_SYSTEM={}, //системный словарь
LANG_QUEUE_TO_UPDATE=[], //очередь элементов для обновления
LANG_PROPS_TO_UPDATE={}, //перечень имён для обновления
LANG_UPDATE_LAST=-1, //индекс последнего обновлённого элемента
LANG_UPDATE_INTERVAL=0, //интервал обновления
LANG_JUST_DELETE=false; //неперестраивание хэша при удалении словаря
var hash_rebuild=function hash_rebuild(){ //функция перестраивания хэша
var obj={};
obj=lang_mixer(obj,LANG_HASH_USER);
for(var i=0,l=LANG_HASH_LIST.length;i<l;i++)
obj=lang_mixer(obj,LANG_HASH_LIST[i]);
LANG_HASH=lang_mixer(obj,LANG_HASH_SYSTEM);
},
lang_mixer=function lang_mixer(obj1,obj2){ //функция расширения свойствами
for(var k in obj2)
obj1[k]=obj2[k];
return obj1;
},
lang_update=function lang_update(data){ //функция, инициирующая обновление
switch(typeof data){
default:
return;
case "string":
LANG_PROPS_TO_UPDATE[data]=1;
break;
case "object":
lang_mixer(LANG_PROPS_TO_UPDATE,data);
}
LANG_UPDATE_LAST=0;
if(!LANG_UPDATE_INTERVAL)
LANG_UPDATE_INTERVAL=setInterval(lang_update_processor,100);
},
lang_update_processor=function lang_update_processor(){ //функция обновления
var date=new Date;
for(var l=LANG_QUEUE_TO_UPDATE.length,
...