PageSourceSearch

https://help-liner.com/cherkasy/assets/js/switcher-lang-popup.js

js help-liner.com collected 2026-10-07 23:23:10 UTC 5,189 bytes, 120 lines download raw bytes

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.