// Tento skript by měl být v HTML vložen PŘED hlavním script.js // Globální překladová funkce, kterou bude používat i script.js let translations = {}; window.t = (key, params = {}) => { let text = translations[key] || key; for (const p in params) { text = text.replace(`{${p}}`, params[p]); } return text; }; /** * Načte překlady pro daný jazyk a aplikuje je na DOM. * @param {string} lang - Kód jazyka (např. 'en', 'cs'). */ window.setLanguage = async function(lang) { // 1. Uloží preferenci uživatele localStorage.setItem('doxa_lang', lang); // Nastaví atribut 'lang' na elementu document.documentElement.lang = lang; // 2. Načte a uloží překlady try { const response = await fetch(`assets/locales/${lang}.json`); if (!response.ok) { console.error(`Chyba: Nepodařilo se načíst soubor s překlady: ${lang}.json`); translations = {}; } else { translations = await response.json(); } } catch (error) { console.error(`Chyba při načítání překladů pro jazyk ${lang}:`, error); translations = {}; } // 3. Přeloží všechny statické prvky v DOM document.querySelectorAll('[data-i18n-key]').forEach(el => { const key = el.getAttribute('data-i18n-key'); const translation = window.t(key); // Přeloží specifický atribut (např. placeholder, title), pokud je definován const attr = el.getAttribute('data-i18n-attr'); if (attr) { el.setAttribute(attr, translation); } else { // Jinak přeloží obsah elementu el.innerHTML = translation; } }); // 4. DŮLEŽITÉ: Znovu inicializuje části aplikace, které používají dynamický text if (typeof window.updateDynamicUIText === 'function') { window.updateDynamicUIText(); } } document.addEventListener('DOMContentLoaded', () => { const userLang = localStorage.getItem('doxa_lang') || navigator.language.split('-')[0]; const langToLoad = ['en', 'cs'].includes(userLang) ? userLang : 'cs'; window.setLanguage(langToLoad); const langToggleBtn = document.getElementById('langToggle'); if (langToggleBtn) { langToggleBtn.addEventListener('click', () => { const currentLang = localStorage.getItem('doxa_lang') || 'cs'; const nextLang = currentLang === 'cs' ? 'en' : 'cs'; window.setLanguage(nextLang); }); } });