Fennix/assets/js/script.js

92 lines
2.5 KiB
JavaScript

const featureDetails = document.querySelectorAll('.feature-detail');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('active');
const img = entry.target.querySelector('img');
img.classList.add('active');
}
else {
entry.target.classList.remove('active');
const img = entry.target.querySelector('img');
img.classList.remove('active');
}
});
}, {
threshold: 0.1
});
featureDetails.forEach(detail => {
observer.observe(detail);
});
function updateContent(langData) {
document.querySelectorAll('[data-i18n]').forEach(element => {
const key = element.getAttribute('data-i18n');
if (key in langData) {
if (element.tagName === "IMG") {
element.src = langData[key];
} else {
element.innerHTML = langData[key];
}
} else {
console.warn(`Missing translation for key: '${key}'`);
}
});
}
function setLanguagePreference(lang) {
localStorage.setItem('language', lang);
location.reload();
}
async function fetchLanguageData(lang) {
try {
const response = await fetch(`assets/lang/${lang}.json`);
if (!response.ok) {
throw new Error(`Language file for '${lang}' not found`);
}
return response.json();
} catch (error) {
console.warn(error.message + `. Falling back to English.`);
return fetchLanguageData('en');
}
}
async function detectAndLoadLanguage() {
const savedLanguage = localStorage.getItem('language');
const browserLanguage = navigator.language || navigator.languages[0];
const languageToLoad = savedLanguage || browserLanguage.split('-')[0] || 'en';
console.log(`Detected language: ${browserLanguage}. Loading: ${languageToLoad}`);
const langData = await fetchLanguageData(languageToLoad);
updateContent(langData);
}
async function changeLanguage(lang) {
setLanguagePreference(lang);
}
window.addEventListener('DOMContentLoaded', detectAndLoadLanguage);
function toggleDropdown() {
const dropdownMenu = document.getElementById('dropdownMenu');
dropdownMenu.style.display = dropdownMenu.style.display === 'block' ? 'none' : 'block';
}
window.onclick = function (event) {
const dropdownMenu = document.getElementById('dropdownMenu');
const dropdownButton = document.querySelector('.header-button');
if (!dropdownMenu.contains(event.target) && event.target !== dropdownButton) {
dropdownMenu.style.display = 'none';
}
};
function downloadFennix() {
// TODO: Here will download the iso file
window.location.href = "https://github.com/EnderIce2/Fennix";
}