1// ФÑнкÑÐ¸Ñ Ð´Ð»Ñ ÑÑÑановки кÑки 2function setCookie(name, value, days) { 3 let expires = ""; 4 if (days) { 5 let date = new Date(); 6 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 7 expires = "; expires=" + date.toUTCString(); 8 } 9 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 10} 11 12// ФÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÐºÑки 13function getCookie(name) { 14 let nameEQ = name + "="; 15 let ca = document.cookie.split(';'); 16 for (let i = 0; i < ca.length; i++) { 17 let c = ca[i].trim(); 18 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 19 } 20 return null; 21} 22 23// ФÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑзÑка 24function handleLanguageChange(lang) { 25 setCookie('selected_language', lang, 90); // УÑÑанавливаем кÑки на 90 дней 26 27 // ÐпÑеделÑем ÑекÑÑий пÑÑÑ Ð¸ ÑегменÑÑ URL 28 const currentPath = window.location.pathname; 29 let pathSegments = currentPath.split('/').filter(segment => segment !== ""); // Разбиваем пÑÑÑ Ð½Ð° ÑегменÑÑ Ð¸ ÑбиÑаем пÑÑÑÑе ÑаÑÑи 30 31 // ÐайдÑм Ð¿Ð°Ð¿ÐºÑ Ð¾Ñновной ÑаÑÑи ÑайÑа (напÑимеÑ, 'rog') 32 const mainSection = pathSegments[0]; // ÐопÑÑÑим, 'rog' â ÑÑо пеÑÐ²Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° 33 34 // ÐбÑабоÑка ÑзÑка 35 if (lang === 'ru') { 36 // ÐÑли вÑбÑан ÑÑÑÑкий ÑзÑк, ÑдалÑем 'uk', еÑли он еÑÑÑ 37 if (pathSegments[1] === 'uk') { 38 pathSegments.splice(1, 1); // УдалÑем 'uk' из вÑоÑого ÑегменÑа пÑÑи 39 } 40 } else if (lang === 'uk') { 41 // ÐÑли вÑбÑан ÑкÑаинÑкий ÑзÑк, добавлÑем 'uk' поÑле оÑновного ÑегменÑа, еÑли его Ð½ÐµÑ 42 if (pathSegments[1] !== 'uk') { 43 pathSegments.splice(1, 0, 'uk'); // ÐÑÑавлÑем 'uk' поÑле пеÑвой ÑаÑÑи пÑÑи (напÑимеÑ, 'rog') 44 } 45 } 46 47 // СобиÑаем новÑй пÑÑÑ 48 const targetPath = '/' + pathSegments.join('/'); 49 50 // УбиÑаем возможнÑе двойнÑе ÑлÑÑи 51 const finalPath = targetPath.replace('//', '/'); 52 53 // СкÑÑваем попап поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑзÑка 54 hidePopup(); 55 56 // ÐеÑенапÑавлÑем ÑолÑко еÑли нÑжно ÑмениÑÑ Ð¿ÑÑÑ 57 if (finalPath !== currentPath) { 58 window.location.href = finalPath; 59 } 60} 61 62// ФÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¿Ð°Ð¿Ð° 63function showPopup() { 64 const popup = document.getElementById("language-popup"); 65 if (popup) { 66 popup.style.display = 'flex'; 67 } 68} 69 70// ФÑнкÑÐ¸Ñ Ð´Ð»Ñ ÑкÑÑÑÐ¸Ñ Ð¿Ð¾Ð¿Ð°Ð¿Ð° 71function hidePopup() { 72 const popup = document.getElementById("language-popup"); 73 if (popup) { 74 popup.style.display = 'none'; 75 } 76} 77 78// ÐÑовеÑка кÑки и логика оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¿Ð°Ð¿Ð° пÑи загÑÑзке ÑÑÑаниÑÑ 79window.onload = function () { 80 const language = getCookie('selected_language'); 81 const currentPath = window.location.pathname; 82 83 // Ðогика показа попапа 84 if (!language) { 85 // ÐÑли кÑки Ñ ÑзÑком неÑ, показÑваем попап 86 showPopup(); 87 } else { 88 // УÑÑанавливаем акÑивнÑй ÑзÑк в пеÑеклÑÑаÑеле на ÑÑÑаниÑе 89 document.querySelectorAll('.language__img').forEach(function(link) { 90 if (link.getAttribute('data-google-lang') === language) { 91 link.classList.add('active'); 92 } else { 93 link.classList.remove('active'); 94 } 95 }); 96 97 // ÐÑовеÑÑем, ÑÑÐ¾Ð±Ñ ÑекÑÑий пÑÑÑ Ñовпадал Ñ Ð²ÑбÑаннÑм ÑзÑком 98 if ((language === 'ru' && currentPath.includes('/uk')) || (language === 'uk' && !currentPath.includes('/uk'))) { 99 handleLanguageChange(language); // ÐеÑенапÑавлÑем на нÑжнÑÑ Ð²ÐµÑÑÐ¸Ñ 100 } 101 } 102}; 103 104// ÐбÑабоÑÑик кликов по кнопкам в попапе 105document.querySelectorAll('.language-popup__buttons a').forEach(function(link) { 106 link.addEventListener('click', function(event) { 107 event.preventDefault(); 108 const selectedLang = this.getAttribute('data-google-lang'); 109 handleLanguageChange(selectedLang); // ÐенÑем ÑзÑк и кÑки 110 });
111}); 112 113// ÐбÑабоÑÑик кликов по ÑзÑÐºÐ¾Ð²Ð¾Ð¼Ñ Ð¿ÐµÑеклÑÑаÑÐµÐ»Ñ (вне попапа) 114document.querySelectorAll('.language__img').forEach(function(link) { 115 link.addEventListener('click', function(event) { 116 event.preventDefault(); 117 const selectedLang = this.getAttribute('data-google-lang'); 118 handleLanguageChange(selectedLang); // ÐенÑем ÑзÑк и кÑки 119 }); 120});
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.