1/** 2 * Translation utility Functions for cookie management and language dropdown handling 3 */ 4 5const SUPPORTED_LANGUAGES = ['en', 'es', 'hy', 'zh', 'fr', 'ko', 'pt', 'ru', 'vi']; 6const MS_IN_HOUR = 3600000; // milliseconds in a HOUR 7const ISITE_TRANSLATE_LANG = 'isite-translate-lang'; 8 9function setCookie(name, value, hours) { 10 let expires = ''; 11 if (!hours || hours < 1) return; 12 13 let date = new Date(); 14 date.setTime(date.getTime() + hours * MS_IN_HOUR); 15 expires = '; expires=' + date.toUTCString(); 16 document.cookie = name + '=' + (value || '') + expires + '; path=/; SameSite=Lax; Secure'; 17} 18 19function getCookie(name) { 20 const value = `; ${document.cookie}`; 21 const parts = value.split(`; ${name}=`); 22 if (parts.length === 2) 23 return parts 24 .pop() 25 .split(';') 26 .shift(); 27 return null; 28} 29 30function deleteCookie(name) { 31 document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/'; 32} 33 34function resetLanguage() { 35 const currentLanguage = getCookie(ISITE_TRANSLATE_LANG); 36 if (!currentLanguage) return; 37 38 deleteCookie(ISITE_TRANSLATE_LANG); 39 40 let $languageSelect = $('#language-select'); 41 $languageSelect.val(''); 42 43 $('#translation-dlg').modal('hide'); 44 setTimeout(function() { 45 window.location.reload(); 46 }, 300); 47} 48 49function updateDropdownFromCookie() { 50 let savedLanguage = getCookie(ISITE_TRANSLATE_LANG); 51 52 let $languageSelect = $('#language-select'); 53 if (savedLanguage && SUPPORTED_LANGUAGES.includes(savedLanguage)) { 54 $languageSelect.val(savedLanguage); 55 } else { 56 $languageSelect.val(''); 57 } 58} 59 60// Function to handle language change 61function handleLanguageChange() { 62 let $languageSelect = $('#language-select'); 63 let selectedLanguage = $languageSelect.val(); 64 65 setCookie(ISITE_TRANSLATE_LANG, selectedLanguage, 1); 66 67 $('#translation-dlg').modal('hide'); 68 69 // Reload page 70 setTimeout(function() { 71 window.location.reload(); 72 }, 300); 73} 74 75function initializeLanguageDropdown() { 76 $(document).on('change.languageSwitcher', '#language-select', function() { 77 handleLanguageChange(); 78 }); 79 80 updateDropdownFromCookie(); 81}
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.