1const googleTranslateElement = document.getElementById("google_translate_element"); 2const googleTranslatePopup = document.getElementById("google_translate_consentpopup"); 3const googleTranslatePageLanguage = googleTranslateElement.dataset.translateLang; 4const googleTranslateLanguages = googleTranslateElement.dataset.translateIncludedLang; 5const googleTranslateServerName = googleTranslateElement.dataset.translateServerName; 6const googleTranslateServerNameWWW = googleTranslateElement.dataset.translateServerNameWww; 7const googleTranslateLanguagesArray = googleTranslateLanguages.split(","); 8const googleTranslatePopupText = { 9 "de": { 10 title: "Zustimmung erforderlich", 11 text: "Um die automatische Ãbersetzung nutzen zu können, müssen sie der<br/> Verwendung von <b>Google Ãbersetzer</b> zustimmen.", 12 accept: "Zustimmen", 13 decline: "Ablehnen" 14 }, 15 "en": { 16 title: "Permission required", 17 text: "This website uses <b>Google Translate</b> to automatically translate text in the selected language.<br/> If you want to continue, you have to allow the usage otherwise we are unable to translate the contents of this website.", 18 accept: "Accept", 19 decline: "Decline" 20 } 21}; 22 23function googleTranslateGetCookie(name) { 24 const v = document.cookie.match("(^|;) ?" + name + "=([^;]*)(;|$)"); 25 return v ? v[2] : null; 26} 27 28function googleTranslateSetCookie(name, value, options) { 29 const days = (options === null || options === void 0 ? void 0 : options.days) || 365; 30 const path = (options === null || options === void 0 ? void 0 : options.path) || "/"; 31 const domain = (options === null || options === void 0 ? void 0 : options.domain) || false; 32 const secure = (options === null || options === void 0 ? void 0 : options.secure) || false; 33 const expires = (options === null || options === void 0 ? void 0 : options.expires) || 24 * 60 * 60 * 1000 * days; 34 const currDate = new Date(); 35 let expiryDate = new Date(currDate.getTime() + expires); 36 37 if (expires < 0) { 38 expiryDate = new Date(0); /* set to a past date */ 39 } 40 const cookieString = name + "=" + value + "; path=" + path + (domain ? "; domain=" + domain : "") + (secure ? "; secure" : "") + "; expires=" + expiryDate.toUTCString(); 41 document.cookie = cookieString; 42} 43 44function googleTranslateDeleteCookie(name, domain) { 45 const computedDomain = domain || false; 46 googleTranslateSetCookie(name, "", { 47 expires: -1, 48 domain: computedDomain 49 }); 50} 51 52function googleTranslateOpenPopup(lang) { 53 /* make popup visible */ 54 googleTranslatePopup.classList.add("visible"); 55 56 /* declare text elements */ 57 const title = document.getElementById("google_translate_consentpopup_title"); 58 const text = document.getElementById("google_translate_consentpopup_text"); 59 const declineButton = document.getElementById("google_translate_consentpopup_decline"); 60 const acceptButton = document.getElementById("google_translate_consentpopup_accept"); 61 62 /* change text inside popup based on language */ 63 if(Object.keys(googleTranslatePopupText).includes(lang)) { 64 title.innerHTML = googleTranslatePopupText[lang].title; 65 text.innerHTML = googleTranslatePopupText[lang].text; 66 declineButton.innerHTML = googleTranslatePopupText[lang].decline; 67 acceptButton.innerHTML = googleTranslatePopupText[lang].accept; 68 } else { 69 /* show english constiant as default */ 70 title.innerHTML = googleTranslatePopupText["en"].title; 71 text.innerHTML = googleTranslatePopupText["en"].text; 72 declineButton.innerHTML = googleTranslatePopupText["en"].decline; 73 acceptButton.innerHTML = googleTranslatePopupText["en"].accept; 74 } 75 76 /* when a language is defined, set it as attribute on popup */ 77 if(lang) { 78 googleTranslatePopup.setAttribute("data-selectedlanguage", lang); 79 } 80} 81 82function googleTranslateClosePopup() { 83 googleTranslatePopup.classList.remove("visible"); 84 googleTranslatePopup.removeAttribute("data-selectedlanguage"); 85} 86 87function googleTranslateConsent() { 88 /* get selected language + klaro manager */ 89 const lang = googleTranslatePopup.getAttribute("data-selectedlanguage"); 90 const manager = klaro.getManager(); 91 92 /* update consent and close popup */ 93 manager.updateConsent("googletranslate", true); 94 manager.saveAndApplyConsents(); 95 googleTranslateClosePopup(); 96 97 /* change to language if defined as attribute on popup */ 98 if(lang) { 99 googleTranslateChangeLanguage(lang); 100 } 101} 102 103function googleTranslateDecline() { 104 googleTranslateClosePopup(); 105} 106 107function googleTranslateChangeLanguage(lang) { 108 /* check if klaro consent exists */ 109 const manager = window.klaro ? window.klaro.getManager() : false; 110 const hasConsented = manager && manager.getConsent("googletranslate") && manager.confirmed; 111 112 /* if page language, change regardless of consent (to clean cookies) */ 113 if(lang === googleTranslatePageLanguage) { 114 googleTranslateElementChangeLanguage(lang); 115 return; 116 } 117 118 if(hasConsented || window.klaro === undefined) { 119 /* change language */ 120 googleTranslateElementChangeLanguage(lang); 121 } else { 122 /* open popup */ 123 googleTranslateOpenPopup(lang); 124 } 125} 126 127/** 128 * Change the active language for Google Translate. 129 * @param {string} lang - ISO-639-1 Code for the language (de, en); 130 */ 131function googleTranslateElementChangeLanguage(lang) { 132 /* throw js error when language is not defined in array */ 133 if(!googleTranslateLanguagesArray.includes(lang)) { 134 throw new Error("googletranslate: language \'" + lang + "\' not defined in array!"); 135 } 136 137 /* clean all existing cookies */ 138 googleTranslateDeleteCookie("googtrans"); 139 googleTranslateDeleteCookie("googtrans", googleTranslateServerName); 140 googleTranslateDeleteCookie("googtrans", googleTranslateServerName); 141 googleTranslateDeleteCookie("googtrans", googleTranslateServerNameWWW); 142 143 /* reload page if language === currentlanguage (to prevent setting new cookies) */ 144 if(lang === googleTranslatePageLanguage) { 145 location.reload(); 146 return; 147 } 148 149 /* set new language & reload */ 150 googleTranslateSetCookie("googtrans", "/" + googleTranslatePageLanguage + "/" + lang); 151 location.reload(); 152} 153 154function googleTranslateDisable() { 155 googleTranslateDeleteCookie("googtrans"); 156 googleTranslateDeleteCookie("googtrans", googleTranslateServerName); 157 googleTranslateDeleteCookie("googtrans", googleTranslateServerName); 158 googleTranslateDeleteCookie("googtrans", googleTranslateServerNameWWW); 159 160 location.reload(); 161}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.