diff --git a/website/lang-init.js b/website/lang-init.js index 3485abc..d1172ce 100644 --- a/website/lang-init.js +++ b/website/lang-init.js @@ -1,22 +1,30 @@ (function() { var html = document.documentElement; var path = window.location.pathname; - + + // Mapping of browser language codes to KoalaSync locale directories + var langMap = { + 'de': 'de', + 'fr': 'fr', + 'es': 'es', + 'pt': 'pt-BR', + 'ru': 'ru' + }; + // Check if we are on the root index page (either "/" or "/index.html" at the root) var isRootIndex = path === '/' || path === '/index.html' || path === ''; - + if (isRootIndex) { var savedLang = localStorage.getItem('koala_lang'); - var browserLang = navigator.language.startsWith('de') ? 'de' : 'en'; - var preferredLang = savedLang || browserLang; - - if (preferredLang === 'de') { - // Redirect to German version - window.location.replace('de/'); + var browserLang = navigator.language.split('-')[0]; + var preferredLang = savedLang || langMap[browserLang] || 'en'; + + if (preferredLang !== 'en') { + window.location.replace(preferredLang + '/'); return; } } - + var htmlClasses = html.className.split(' '); var activeLang = null; var hasStaticLang = false; @@ -28,38 +36,38 @@ break; } } - + if (hasStaticLang) { localStorage.setItem('koala_lang', activeLang); } else { var savedLang = localStorage.getItem('koala_lang'); - var browserLang = navigator.language.startsWith('de') ? 'de' : 'en'; - activeLang = savedLang || browserLang; - + var browserLang = navigator.language.split('-')[0]; + activeLang = savedLang || langMap[browserLang] || 'en'; + // Dynamic utility pages currently only support English and German markup. - // Fallback to English for any other language preference (e.g. fr, es) to avoid bilingual text duplication. + // Fallback to English for any other language to avoid bilingual text duplication. if (activeLang !== 'de') { activeLang = 'en'; } - + html.classList.add('lang-' + activeLang); html.lang = activeLang; } - + // Update titles dynamically based on page var isIndex = path === '/' || path.endsWith('index.html') || path.split('/').pop() === ''; var isJoin = path.includes('join'); - + if (isIndex) { - var titles = { - en: 'KoalaSync | Real-time Video Synchronization for Friends', - de: 'KoalaSync | Echtzeit-Video-Synchronisation für Freunde' + var titles = { + en: 'KoalaSync | Real-time Video Synchronization for Friends', + de: 'KoalaSync | Echtzeit-Video-Synchronisation für Freunde' }; document.title = titles[activeLang] || titles.en; } else if (isJoin) { - var titles = { - en: 'Join Room | KoalaSync', - de: 'Raum beitreten | KoalaSync' + var titles = { + en: 'Join Room | KoalaSync', + de: 'Raum beitreten | KoalaSync' }; document.title = titles[activeLang] || titles.en; } diff --git a/website/sitemap.xml b/website/sitemap.xml index 8b2d7b4..e627d02 100644 --- a/website/sitemap.xml +++ b/website/sitemap.xml @@ -36,16 +36,4 @@ weekly 0.8 - - https://sync.koalastuff.net/impressum - 2026-05-31 - yearly - 0.3 - - - https://sync.koalastuff.net/datenschutz - 2026-05-31 - yearly - 0.3 - diff --git a/website/style.css b/website/style.css index 41dd2ac..1216e4d 100644 --- a/website/style.css +++ b/website/style.css @@ -48,6 +48,12 @@ box-sizing: border-box; } +:focus-visible { + outline: 2px solid var(--accent); + outline-offset: 2px; + border-radius: 6px; +} + body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; background-color: var(--bg); @@ -102,6 +108,15 @@ section { padding: 6rem 0; } +/* Content-visibility for offscreen sections to improve INP */ +.use-cases-section, +#features, +#self-hosting, +.comparison-section { + content-visibility: auto; + contain-intrinsic-size: 700px; +} + /* --- Navigation --- */ nav { position: fixed; diff --git a/website/template.html b/website/template.html index 0c641c8..05534bb 100644 --- a/website/template.html +++ b/website/template.html @@ -7,6 +7,7 @@ + @@ -58,7 +59,40 @@ "description": "Watch Netflix, YouTube, Twitch, Jellyfin, Emby and almost any HTML5 video in perfect sync with friends. Open source, privacy-first, free.", "softwareVersion": "1.9.3", "license": "https://opensource.org/licenses/MIT", - "sameAs": "https://github.com/Shik3i/KoalaSync" + "sameAs": "https://github.com/Shik3i/KoalaSync", + "image": "https://sync.koalastuff.net/assets/NewLogoIcon.webp", + "screenshot": "https://sync.koalastuff.net/assets/PlatformJuggler_New.webp" + } + + + + + + + +