"use strict"; const I18NManager = (function(){ const I18NManager = function(judge_pole){ const self = this, sentences = {}; let language = "espanol"; const constructor = () => { [i18n, typeof custom_i18n != "undefined" ? custom_i18n : {}].forEach(block => { self.add(block, true); }); self.set_language(judge_pole.settings.get("language"), null, Object.keys(sentences)[0] || language); }; this.add = (new_sentences, overwrite = true) => { for(const language in new_sentences){ if(!sentences[language]) sentences[language] = {}; for(const key in new_sentences[language]) if(overwrite || sentences[language][key] === undefined) sentences[language][key] = new_sentences[language][key]; }; }; const get_sentence = (strings, _default) => { const done = []; if(typeof strings == "string") strings = [strings]; for(const current of [language].concat(Object.keys(sentences))) if(!done.includes(current)){ done.push(current); for(const key of strings) if(sentences[current][key] !== undefined) return sentences[current][key]; }; if(_default !== null) return _default; for(const text of strings) return text; return ""; }; this.get = (strings, inputs = null, _default = null) => Common.string_variables(get_sentence(strings, _default), inputs); this.update = () => { document.querySelectorAll("[data-i18n]").forEach(element => { const text = self.get(element.getAttribute("data-i18n")); if(element.getAttribute("data-i18n-without") != "true") element.textContent = text; ["title", "alt", "placeholder"].forEach(key => { element.hasAttribute(key) && element.setAttribute(key, text); }); }) }; this.set_language = new_language => { if(language != new_language && sentences[new_language]){ language = new_language; self.update(); }; }; this.get_languages = () => Object.keys(sentences); this.get_current_language = () => language; constructor(); }; return I18NManager; })();