From 37df4b267cbea9db3f68c7dc17feeed28b54a771 Mon Sep 17 00:00:00 2001 From: KoalaDev <6156589+Shik3i@users.noreply.github.com> Date: Sun, 5 Jul 2026 21:50:33 +0200 Subject: [PATCH] feat: landing page redesign - New hero headline "Turn any video into a watch party" with animated gradient highlight, sharper subtitle and quiet trust line under the CTAs - Changelog badge redesigned as the koala's speech bubble (version and release date baked in at build time, no version.json fetch anymore) - Light/dark theme toggle in the header (dark default, pre-paint via lang-init, full light theme across sections) - Use cases and "Why KoalaSync" merged into one section with the three strongest feature tiles; question-mark koala moved to the FAQ - FAQ and self-hosting setup collapsed by default via shared section-collapse component (hash deep links auto-open them) - Compat/juggler section more compact - og:image switched to the 1280x640 repository OpenGraph card (landing and join page), generated during build - "watch party" keyword added to meta title/description in all 15 locales - All em-dashes removed from user-facing copy Co-Authored-By: Claude Fable 5 --- website/app.js | 125 +++++---- website/assets/NewLogoIcon_64.webp | Bin 1282 -> 1282 bytes website/assets/og-image.png | Bin 0 -> 119582 bytes website/build.cjs | 13 + website/join.html | 4 +- website/lang-init.js | 9 +- website/locales/de.json | 38 +-- website/locales/en.json | 38 +-- website/locales/es.json | 22 +- website/locales/fr.json | 36 ++- website/locales/it.json | 22 +- website/locales/ja.json | 24 +- website/locales/ko.json | 22 +- website/locales/nl.json | 36 ++- website/locales/pl.json | 38 +-- website/locales/pt-BR.json | 22 +- website/locales/pt.json | 20 +- website/locales/ru.json | 24 +- website/locales/tr.json | 36 ++- website/locales/uk.json | 24 +- website/locales/zh.json | 32 ++- website/privacy.html | 2 +- website/style.css | 424 ++++++++++++++++++++++++++++- website/template.html | 240 +++++++--------- 24 files changed, 853 insertions(+), 398 deletions(-) create mode 100644 website/assets/og-image.png diff --git a/website/app.js b/website/app.js index fbc6327..c16f5d9 100644 --- a/website/app.js +++ b/website/app.js @@ -60,6 +60,32 @@ document.addEventListener('DOMContentLoaded', () => { } }; + // Theme toggle (dark is default; light mode via html.theme-light, + // pre-paint class is applied by lang-init.js to avoid a flash) + const themeToggle = document.getElementById('theme-toggle'); + const themeMeta = document.querySelector('meta[name="theme-color"]'); + const syncThemeMeta = () => { + if (themeMeta) { + themeMeta.setAttribute('content', document.documentElement.classList.contains('theme-light') ? '#f1f5f9' : '#0f172a'); + } + }; + syncThemeMeta(); + if (themeToggle) { + themeToggle.addEventListener('click', () => { + const isLight = document.documentElement.classList.toggle('theme-light'); + safeSetLocalStorage('koala_theme', isLight ? 'light' : 'dark'); + syncThemeMeta(); + }); + } + + // Open collapsed section blocks when the URL directly targets them + const hashCollapseMap = { '#faq': 'faq-collapse', '#self-hosting': 'selfhost-collapse' }; + const collapseId = hashCollapseMap[window.location.hash]; + if (collapseId) { + const collapseEl = document.getElementById(collapseId); + if (collapseEl) collapseEl.open = true; + } + // Scroll Reveal Logic (IntersectionObserver for performance) const revealElements = document.querySelectorAll('[data-reveal]'); @@ -96,17 +122,11 @@ document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('section[id], header[id]').forEach(el => sectionObserver.observe(el)); } - // Navbar scroll effect + // Navbar scroll effect (class-based so it follows the active theme) const nav = document.querySelector('nav'); window.addEventListener('scroll', () => { - if (window.scrollY > 50) { - nav.style.padding = '0.75rem 0'; - nav.style.background = 'rgba(15, 23, 42, 0.9)'; - } else { - nav.style.padding = '1rem 0'; - nav.style.background = 'rgba(30, 41, 59, 0.7)'; - } - }); + nav.classList.toggle('nav-scrolled', window.scrollY > 50); + }, { passive: true }); // Invite Detection & Bridge const checkInvite = () => { @@ -372,63 +392,42 @@ document.addEventListener('DOMContentLoaded', () => { } }); - const updateDynamicVersion = async () => { - try { - const versionPath = '/version.json'; - const response = await fetch(versionPath); - if (!response.ok) return; - const data = await response.json(); - const { version, date } = data; - if (!version || !date) return; + // Version and release date are baked in at build time; only the relative + // "x days ago" needs to be computed at view time so it never goes stale. + const updateDynamicVersion = () => { + const bubble = document.querySelector('.koala-speech-bubble'); + if (!bubble || !bubble.dataset.release) return; + const releaseDate = new Date(bubble.dataset.release); + if (isNaN(releaseDate)) return; - const releaseDate = new Date(date); - const now = new Date(); - const diffMs = now - releaseDate; - const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24)); - const diffHours = Math.floor(diffMs / (1000 * 60 * 60)); - const diffMins = Math.floor(diffMs / (1000 * 60)); + const diffMs = Date.now() - releaseDate.getTime(); + const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24)); + const diffHours = Math.floor(diffMs / (1000 * 60 * 60)); + const diffMins = Math.floor(diffMs / (1000 * 60)); - let relativeTimeEn = ''; - let relativeTimeDe = ''; - - if (diffDays > 0) { - relativeTimeEn = `${diffDays} ${diffDays === 1 ? 'day' : 'days'} ago`; - relativeTimeDe = `vor ${diffDays} ${diffDays === 1 ? 'Tag' : 'Tagen'}`; - } else if (diffHours > 0) { - relativeTimeEn = `${diffHours} ${diffHours === 1 ? 'hour' : 'hours'} ago`; - relativeTimeDe = `vor ${diffHours} ${diffHours === 1 ? 'Stunde' : 'Stunden'}`; - } else if (diffMins > 0) { - relativeTimeEn = `${diffMins} ${diffMins === 1 ? 'minute' : 'minutes'} ago`; - relativeTimeDe = `vor ${diffMins} ${diffMins === 1 ? 'Minute' : 'Minuten'}`; - } else { - relativeTimeEn = 'just now'; - relativeTimeDe = 'gerade eben'; - } - - const badgeEn = document.querySelector('.version-text-en'); - const badgeDe = document.querySelector('.version-text-de'); - - if (badgeEn) { - badgeEn.textContent = `v${version} OUT NOW • ${relativeTimeEn}`; - } - if (badgeDe) { - badgeDe.textContent = `v${version} JETZT VERFÜGBAR • ${relativeTimeDe}`; - } - - // Update Schema.org structured data dynamically - const schemaScript = document.getElementById('schema-software'); - if (schemaScript) { - try { - const schema = JSON.parse(schemaScript.textContent); - schema.softwareVersion = version; - schemaScript.textContent = JSON.stringify(schema, null, 2); - } catch (err) { - console.warn('Failed to dynamically update schema version:', err); - } - } - } catch (e) { - console.warn('Failed to fetch dynamic version info:', e); + let relativeTimeEn; + let relativeTimeDe; + if (diffDays > 0) { + relativeTimeEn = `${diffDays} ${diffDays === 1 ? 'day' : 'days'} ago`; + relativeTimeDe = `vor ${diffDays} ${diffDays === 1 ? 'Tag' : 'Tagen'}`; + } else if (diffHours > 0) { + relativeTimeEn = `${diffHours} ${diffHours === 1 ? 'hour' : 'hours'} ago`; + relativeTimeDe = `vor ${diffHours} ${diffHours === 1 ? 'Stunde' : 'Stunden'}`; + } else if (diffMins > 0) { + relativeTimeEn = `${diffMins} ${diffMins === 1 ? 'minute' : 'minutes'} ago`; + relativeTimeDe = `vor ${diffMins} ${diffMins === 1 ? 'Minute' : 'Minuten'}`; + } else { + relativeTimeEn = 'just now'; + relativeTimeDe = 'gerade eben'; } + + bubble.querySelectorAll('.bubble-ago').forEach(el => { + // Nearest [lang] ancestor is the bubble's own language wrapper span + // (not the element, which also carries a lang attribute). + const langWrap = el.closest('[lang]'); + const isDe = !!langWrap && langWrap.getAttribute('lang') === 'de'; + el.textContent = (isDe ? relativeTimeDe : relativeTimeEn) + ' \u00b7 '; + }); }; // Extension Mockup Tab Switcher diff --git a/website/assets/NewLogoIcon_64.webp b/website/assets/NewLogoIcon_64.webp index b1f4e43ede2c8f7304360593b419303eb296c0d2..660ffe28987821948744dafb8543121d3c9924ee 100644 GIT binary patch delta 175 zcmV;g08sye3W5r-j{*uRbh!h)p{C}lShJY|(*b{`0tbHB-=W1lvs8JmTg?5P$6NU| zO#PNrF}c9Ck3x?#EFIFIEEWqqr&MVE&)R*f)BkMkZ`0M?cCguvrw7XYD@K>HoHNx9RHcyI5?-@+?sg|AU>&-G4md zD$=Kt1fjo2eO@GCUGUCe6T6+N5TM#$rGCu%%0C_&{K4-ZrketIuEE5-AGFN%Jt!V_ dA-)%z8o>$A#3xK?o>SG_`v#;TD2(v9006+KRrvq_ diff --git a/website/assets/og-image.png b/website/assets/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..53f3fc95ffd6a2d48163bf00120ad3fb7633a719 GIT binary patch literal 119582 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

a9WHze8X%M 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 z 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 nqXrt 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 { diff --git a/website/join.html b/website/join.html index 74cd796..dd9b595 100644 --- a/website/join.html +++ b/website/join.html @@ -16,13 +16,13 @@ - + - + diff --git a/website/lang-init.js b/website/lang-init.js index 7a70672..eadb3eb 100644 --- a/website/lang-init.js +++ b/website/lang-init.js @@ -18,6 +18,11 @@ } }; + // Apply saved theme before first paint (dark is the default, no class needed) + if (safeGetLocalStorage('koala_theme') === 'light') { + html.classList.add('theme-light'); + } + // Mapping of browser language codes to KoalaSync locale directories var langMap = { 'de': 'de', @@ -97,8 +102,8 @@ if (isIndex) { var titles = { - en: 'KoalaSync | Real-time Video Synchronization for Friends', - de: 'KoalaSync | Echtzeit-Video-Synchronisation für Freunde' + en: 'KoalaSync | Watch Party for Netflix, YouTube & Any Video', + de: 'KoalaSync | Watch Party für Netflix, YouTube & jedes Video' }; document.title = titles[activeLang] || titles.en; } else if (isJoin) { diff --git a/website/locales/de.json b/website/locales/de.json index 0cb327c..1987871 100644 --- a/website/locales/de.json +++ b/website/locales/de.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "de_DE", - "META_TITLE": "KoalaSync | Netflix, YouTube & jedes Video mit Freunden synchronisieren", - "META_DESCRIPTION": "Schaue Netflix, YouTube, Twitch und jedes HTML5-Video synchron mit Freunden. Kostenlose, quelloffene Browser-Erweiterung. Keine Anmeldung erforderlich.", - "SCHEMA_APP_DESC": "Schaue Netflix, YouTube, Twitch und jedes HTML5-Video synchron mit Freunden. Kostenlose, quelloffene Browser-Erweiterung. Keine Anmeldung erforderlich.", + "META_TITLE": "KoalaSync | Watch Party für Netflix, YouTube & jedes Video", + "META_DESCRIPTION": "Watch Party auf Netflix, YouTube, Twitch & jedem HTML5-Video. Kostenlose Open-Source-Erweiterung für Chrome & Firefox. Kein Konto, kein Tracking, keine Werbung.", + "SCHEMA_APP_DESC": "Watch Party auf Netflix, YouTube, Twitch & jedem HTML5-Video. Kostenlose Open-Source-Erweiterung für Chrome & Firefox. Kein Konto, kein Tracking, keine Werbung.", "OG_TITLE": "KoalaSync | Netflix, Emby, Jellyfin & fast jedes Video mit Freunden synchronisieren", "OG_DESCRIPTION": "Schaue Netflix, Emby, Jellyfin, YouTube, Twitch und fast jedes HTML5-Video perfekt synchronisiert. Quelloffene, datenschutzfreundliche Browser-Erweiterung für Chrome und Firefox.", "TWITTER_TITLE": "KoalaSync | Netflix, Emby, Jellyfin & fast jedes Video mit Freunden synchronisieren – Browser-Erweiterung", "TWITTER_DESCRIPTION": "Schaue Netflix, Emby, Jellyfin, YouTube, Twitch und fast jedes HTML5-Video perfekt synchronisiert mit Freunden. Datenschutzfreundliche Browser-Erweiterung für Chrome und Firefox.", "NAV_FEATURES": "Funktionen", "NAV_HOW_IT_WORKS": "So funktioniert's", - "HERO_TITLE": "Gemeinsam schauen.Perfekt synchron.", - "HERO_SUBTITLE": "Dein Kino-Abend auf Distanz. Keine Lags, keine Anmeldung. Einfach Link teilen und zusammen schauen.", + "HERO_TITLE": "Mach jedes Video zur Watch Party.", + "HERO_SUBTITLE": "Dein Kino-Abend auf Distanz, ohne Lags. Kein Account, kein Tracking, keine Werbung. Einfach Link teilen und gemeinsam Play drücken.", "HERO_MASCOT_ALT": "Ein niedlicher Koala steht da und schaut nach unten auf die Download-Buttons", "DEMO_SYNC": "Synchron", - "DEMO_HINT": "Live-Demo — drück Play in einem der Tabs: KoalaSync hält beide synchron.", + "DEMO_HINT": "Live-Demo: Drück Play in einem der Tabs, KoalaSync hält beide synchron.", "DEMO_NO_ROOM": "Noch nicht verbunden", "DEMO_CREATE_ROOM": "Raum erstellen", "DEMO_JOINED": "Raum beigetreten", @@ -49,15 +49,15 @@ "FEATURE_3_TITLE": "Keine Accounts / Datenschutz", "FEATURE_3_DESC": "Kein Login. Keine Daten. Einfach Link teilen und schauen. Der Server läuft flüchtig im RAM und löscht deinen Raum komplett nach dem Verlassen.", "FEATURE_4_TITLE": "Universeller HTML5-Support", - "FEATURE_4_DESC": "Unterstützt YouTube, Twitch, Netflix, Jellyfin, Emby und fast jede beliebige Webseite mit einem HTML5-Video-Tag. Ideal auch für eigene Medienbibliotheken. Es werden keinerlei Videodaten an unsere Server gesendet — nur Synchronisations-Metadaten.", + "FEATURE_4_DESC": "Unterstützt YouTube, Twitch, Netflix, Jellyfin, Emby und fast jede beliebige Webseite mit einem HTML5-Video-Tag. Ideal auch für eigene Medienbibliotheken. Es werden keinerlei Videodaten an unsere Server gesendet, nur Synchronisations-Metadaten.", "FEATURE_5_TITLE": "Self-Hostable & Docker-Ready", "FEATURE_5_DESC": "Unsere Server sind kostenlos und schnell, aber du kannst auch die volle Kontrolle übernehmen, wenn du willst. Starte dein eigenes privates Relay in Sekunden via Docker.", "FEATURE_6_TITLE": "Direkte Einladungen & 1-Klick Beitritt", "FEATURE_6_DESC": "Keine lästigen IPs oder Passwörter austauschen. Teile einfach einen Einladungslink mit deinen Freunden, um sie mit einem Klick in den Raum zu holen.", "FEATURE_7_TITLE": "Lautstärke Angleichen / Audio Compressor", - "FEATURE_7_DESC": "Nie wieder am Lautstärkeregler spielen. Der eingebaute Audio Compressor verstärkt leise Dialoge und zähmt laute Explosionen. Funktioniert auf Netflix, Prime Video, Disney+, YouTube und jedem HTML5-Video. Komplett lokal — keine Audiodaten verlassen deinen Computer.", + "FEATURE_7_DESC": "Nie wieder am Lautstärkeregler spielen. Der eingebaute Audio Compressor verstärkt leise Dialoge und zähmt laute Explosionen. Funktioniert auf Netflix, Prime Video, Disney+, YouTube und jedem HTML5-Video. Komplett lokal, keine Audiodaten verlassen deinen Computer.", "FEATURE_8_TITLE": "Open Source (MIT-Lizenz)", - "FEATURE_8_DESC": "Der gesamte Quellcode ist auf GitHub öffentlich einsehbar. Keine Black Boxes, keine proprietären Teile — 100 % Transparenz vom Relay-Server bis zur Browser-Erweiterung.", + "FEATURE_8_DESC": "Der gesamte Quellcode ist auf GitHub öffentlich einsehbar. Keine Black Boxes, keine proprietären Teile. 100 % Transparenz vom Relay-Server bis zur Browser-Erweiterung.", "COMP_TITLE": "KoalaSync vs. Teleparty", "COMP_SUBTITLE": "Erfahre, warum Open Source, Werbefreiheit und echter Datenschutz die bessere Wahl für gemeinsames Schauen sind.", "COMP_COL_FEATURE": "Funktion", @@ -123,21 +123,21 @@ "FAQ_TITLE": "Häufig gestellte Fragen", "FAQ_SUBTITLE": "Alles, was du über synchrones Videoschauen mit Freunden wissen musst.", "FAQ_Q1": "Kann ich Netflix, Emby oder Jellyfin synchron mit Freunden schauen?", - "FAQ_A1": "Ja! KoalaSync funktioniert mit Netflix, YouTube, Twitch und jeder Website mit einem HTML5-Videoplayer — einschließlich Emby, Jellyfin und eigenen Medienservern. Installiere die Erweiterung, erstelle einen Raum, teile den Einladungslink und alle schauen perfekt synchron.", + "FAQ_A1": "Ja! KoalaSync funktioniert mit Netflix, YouTube, Twitch und jeder Website mit einem HTML5-Videoplayer, einschließlich Emby, Jellyfin und eigenen Medienservern. Installiere die Erweiterung, erstelle einen Raum, teile den Einladungslink und alle schauen perfekt synchron.", "FAQ_Q_VIDEO_ACCESS": "Streamt KoalaSync das Video an meine Freunde?", "FAQ_A_VIDEO_ACCESS": "Nein. KoalaSync streamt, hostet oder teilt keine Videoinhalte und umgeht keinen Zugang. Jede Person schaut das Video lokal im eigenen Browser und braucht selbst Zugriff auf die jeweilige Website oder den Streamingdienst, zum Beispiel ein eigenes Netflix-Konto. KoalaSync synchronisiert nur Aktionen wie Play, Pause und Spulen.", "FAQ_Q2": "Ist KoalaSync eine kostenlose Alternative zu Teleparty?", - "FAQ_A2": "100 % kostenlos und Open Source unter der MIT-Lizenz. Keine Premium-Stufen, keine gesperrten Funktionen, keine Werbung. Anders als Teleparty läuft KoalaSyncs Relay-Server ausschließlich im RAM — ohne Datensammlung und ohne Benutzerkonten.", + "FAQ_A2": "100 % kostenlos und Open Source unter der MIT-Lizenz. Keine Premium-Stufen, keine gesperrten Funktionen, keine Werbung. Anders als Teleparty läuft KoalaSyncs Relay-Server ausschließlich im RAM, ohne Datensammlung und ohne Benutzerkonten.", "FAQ_Q3": "Funktioniert KoalaSync mit Emby, Jellyfin und eigenen Medienservern?", "FAQ_A3": "Ja. KoalaSync erkennt jedes HTML5-Videoelement und funktioniert perfekt mit Emby, Jellyfin, Plex und beliebigen eigenen Streaming-Setups. Du kannst den KoalaSync Relay-Server auch via Docker selbst hosten.", "FAQ_Q4": "Welche Browser und Plattformen unterstützen KoalaSync?", - "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave und alle Chromium-basierten Browser. Direkt aus dem Chrome Web Store oder den Firefox Add-ons installieren — keine manuelle Konfiguration nötig.", + "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave und alle Chromium-basierten Browser. Direkt aus dem Chrome Web Store oder den Firefox Add-ons installieren, keine manuelle Konfiguration nötig.", "FAQ_Q5": "Müssen alle meine Freunde die Erweiterung installieren?", - "FAQ_A5": "Ja, jeder Teilnehmer braucht KoalaSync — aber ohne Anmeldung oder Kontoerstellung. Einfach auf den Einladungslink klicken, die Erweiterung installieren (falls nicht vorhanden) und du bist automatisch im Raum.", + "FAQ_A5": "Ja, jeder Teilnehmer braucht KoalaSync, aber ohne Anmeldung oder Kontoerstellung. Einfach auf den Einladungslink klicken, die Erweiterung installieren (falls nicht vorhanden) und du bist automatisch im Raum.", "FAQ_Q6": "Sind meine Daten sicher? Was, wenn ich dem offiziellen Server nicht traue?", - "FAQ_A6": "Absolut sicher. Der KoalaSync Relay-Server läuft ausschließlich im RAM — alle Sitzungsdaten werden sofort gelöscht, sobald du den Raum verlässt. Keine Datenbank, keine Protokolle, keine Analysen, keine Benutzerkonten. Wenn du volle Kontrolle möchtest: hoste deinen eigenen privaten Relay-Server via Docker in wenigen Minuten. Der gesamte Quellcode ist Open Source und auf GitHub einsehbar.", + "FAQ_A6": "Absolut sicher. Der KoalaSync Relay-Server läuft ausschließlich im RAM, alle Sitzungsdaten werden sofort gelöscht, sobald du den Raum verlässt. Keine Datenbank, keine Protokolle, keine Analysen, keine Benutzerkonten. Wenn du volle Kontrolle möchtest: hoste deinen eigenen privaten Relay-Server via Docker in wenigen Minuten. Der gesamte Quellcode ist Open Source und auf GitHub einsehbar.", "FAQ_Q7": "Kann ich leise Dialoge und laute Explosionen beim Videoschauen im Browser ausgleichen?", - "FAQ_A7": "Ja. KoalaSync 2.2.0 enthält einen eingebauten Audio Compressor, der den Unterschied zwischen lauten und leisen Passagen reduziert. Er läuft lokal über die Web Audio API — keine Audiodaten verlassen deinen Computer. Öffne das Popup, erstelle einen Raum, gehe zu Einstellungen → Audio Processing, schalte den Compressor ein und wähle ein Preset. Funktioniert auf Netflix, Prime Video, Disney+, YouTube und allen HTML5-Video-Seiten.", + "FAQ_A7": "Ja. KoalaSync 2.2.0 enthält einen eingebauten Audio Compressor, der den Unterschied zwischen lauten und leisen Passagen reduziert. Er läuft lokal über die Web Audio API, keine Audiodaten verlassen deinen Computer. Öffne das Popup, erstelle einen Raum, gehe zu Einstellungen → Audio Processing, schalte den Compressor ein und wähle ein Preset. Funktioniert auf Netflix, Prime Video, Disney+, YouTube und allen HTML5-Video-Seiten.", "HOWTO_TITLE": "So synchronisierst du Videos mit Freunden mit KoalaSync", "HOWTO_DESC": "Schaue Videos perfekt synchron mit Freunden auf YouTube, Netflix, Twitch und mehr. Keine Anmeldung, kein Tracking.", "HOWTO_STEP_1_NAME": "Browser-Erweiterung installieren", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Host-Steuerung", "MOCK_HOST_CONTROL_TOGGLE": "Nur ich darf die Wiedergabe steuern", "LABEL_SELECT_VIDEO": "Video auswählen", - "OPTION_SELECT_TAB": "-- Wähle einen Tab --" + "OPTION_SELECT_TAB": "-- Wähle einen Tab --", + "THEME_TOGGLE_LABEL": "Hell-/Dunkelmodus umschalten", + "FAQ_SHOW_ALL": "Alle Fragen anzeigen", + "FAQ_HIDE_ALL": "Fragen ausblenden", + "SELF_SHOW_SETUP": "Setup-Anleitung anzeigen", + "SELF_HIDE_SETUP": "Setup-Anleitung ausblenden", + "HERO_TRUST": "Kostenlos · Open Source · Kein Account nötig" } diff --git a/website/locales/en.json b/website/locales/en.json index 50beaae..64676a0 100644 --- a/website/locales/en.json +++ b/website/locales/en.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "de/", "LANG_TOGGLE_TEXT": "DE", "OG_LOCALE": "en_US", - "META_TITLE": "KoalaSync | Sync Netflix, YouTube & Any Video with Friends", - "META_DESCRIPTION": "Watch Netflix, YouTube, Twitch & any HTML5 video in perfect sync with friends. Free, open-source browser extension for Chrome and Firefox. No sign-up needed.", - "SCHEMA_APP_DESC": "Watch Netflix, YouTube, Twitch & any HTML5 video in perfect sync with friends. Free, open-source browser extension for Chrome and Firefox. No sign-up needed.", + "META_TITLE": "KoalaSync | Watch Party for Netflix, YouTube & Any Video", + "META_DESCRIPTION": "Host a watch party on Netflix, YouTube, Twitch & any HTML5 video. Free, open-source extension for Chrome & Firefox. No account, no tracking, no ads.", + "SCHEMA_APP_DESC": "Host a watch party on Netflix, YouTube, Twitch & any HTML5 video. Free, open-source extension for Chrome & Firefox. No account, no tracking, no ads.", "OG_TITLE": "KoalaSync | Sync Netflix, Emby, Jellyfin & Almost Any Video with Friends", "OG_DESCRIPTION": "Watch Netflix, Emby, Jellyfin, YouTube, Twitch and almost any HTML5 video in perfect sync. Privacy-first, open-source browser extension for Chrome & Firefox.", "TWITTER_TITLE": "KoalaSync | Sync Netflix, Emby, Jellyfin & Almost Any Video with Friends – Browser Extension", "TWITTER_DESCRIPTION": "Watch Netflix, Emby, Jellyfin, YouTube, Twitch and almost any HTML5 video in perfect sync with friends. Privacy-first, open-source browser extension for Chrome and Firefox.", "NAV_FEATURES": "Features", "NAV_HOW_IT_WORKS": "How it works", - "HERO_TITLE": "Watch Together.Sync Perfectly.", - "HERO_SUBTITLE": "Your remote movie night without lags. No registration, no data collection. Just share a link and watch together.", + "HERO_TITLE": "Turn any video into a watch party.", + "HERO_SUBTITLE": "Your remote movie night without lags. No account, no tracking, no ads. Just share a link and press play together.", "HERO_MASCOT_ALT": "A cute koala standing and looking down at the download buttons", "DEMO_SYNC": "In sync", - "DEMO_HINT": "Live demo — press play in either tab: KoalaSync keeps both in sync.", + "DEMO_HINT": "Live demo: press play in either tab and KoalaSync keeps both in sync.", "DEMO_NO_ROOM": "Not connected yet", "DEMO_CREATE_ROOM": "Create Room", "DEMO_JOINED": "Room joined", @@ -49,15 +49,15 @@ "FEATURE_3_TITLE": "Zero Accounts / Pure Privacy", "FEATURE_3_DESC": "No registration, no tracking, no persistency footprints. The server runs entirely in ephemeral RAM and purges your room when you leave.", "FEATURE_4_TITLE": "Universal HTML5 Support", - "FEATURE_4_DESC": "Works on YouTube, Twitch, Netflix, Jellyfin, Emby, and almost any standard webpage containing a HTML5 video element. Also compatible with custom self-hosted setups. No video data is ever sent to our servers — only synchronization metadata.", + "FEATURE_4_DESC": "Works on YouTube, Twitch, Netflix, Jellyfin, Emby, and almost any standard webpage containing a HTML5 video element. Also compatible with custom self-hosted setups. No video data is ever sent to our servers, only synchronization metadata.", "FEATURE_5_TITLE": "Self-Hostable & Docker-Ready", "FEATURE_5_DESC": "Our official servers are free and fast, but you can take full ownership if you want to. Launch your own private relay server in seconds via Docker.", "FEATURE_6_TITLE": "Instant Invites / 1-Click Join", "FEATURE_6_DESC": "No IP addresses or passwords to exchange. Share a generated invite link with your friends to let them join your room automatically with a single click.", "FEATURE_7_TITLE": "Volume Leveling / Audio Compressor", - "FEATURE_7_DESC": "No more riding the volume knob. Built-in audio compressor boosts quiet dialogue and tames loud explosions. Works on Netflix, Prime Video, Disney+, YouTube, and any HTML5 video. Completely local — no audio data leaves your computer.", + "FEATURE_7_DESC": "No more riding the volume knob. Built-in audio compressor boosts quiet dialogue and tames loud explosions. Works on Netflix, Prime Video, Disney+, YouTube, and any HTML5 video. Completely local, no audio data leaves your computer.", "FEATURE_8_TITLE": "Open Source (MIT License)", - "FEATURE_8_DESC": "The entire codebase is publicly auditable on GitHub. No black boxes, no proprietary blobs — 100% transparency from the relay server to the browser extension.", + "FEATURE_8_DESC": "The entire codebase is publicly auditable on GitHub. No black boxes, no proprietary blobs. 100% transparency from the relay server to the browser extension.", "COMP_TITLE": "KoalaSync vs. Teleparty", "COMP_SUBTITLE": "See why open source, ad-free and privacy-first is the superior way to watch together.", "COMP_COL_FEATURE": "Feature", @@ -123,21 +123,21 @@ "FAQ_TITLE": "Frequently Asked Questions", "FAQ_SUBTITLE": "Everything you need to know about watching videos together in perfect sync.", "FAQ_Q1": "Can I watch Netflix, Emby or Jellyfin together in sync with friends?", - "FAQ_A1": "Yes! KoalaSync works on Netflix, YouTube, Twitch and any website with an HTML5 video player — including Emby, Jellyfin and self-hosted media servers. Install the extension, create a room, share the invite link, and everyone watches in perfect sync.", + "FAQ_A1": "Yes! KoalaSync works on Netflix, YouTube, Twitch and any website with an HTML5 video player, including Emby, Jellyfin and self-hosted media servers. Install the extension, create a room, share the invite link, and everyone watches in perfect sync.", "FAQ_Q_VIDEO_ACCESS": "Does KoalaSync stream the video to my friends?", "FAQ_A_VIDEO_ACCESS": "No. KoalaSync does not stream, host, share, or bypass access to video content. Everyone watches the video locally in their own browser and needs their own access to the website or streaming service, such as their own Netflix account. KoalaSync only synchronizes playback actions like play, pause, and seeking.", "FAQ_Q2": "Is KoalaSync a free alternative to Teleparty?", - "FAQ_A2": "100% free and open source under the MIT License. No premium tiers, no locked features, no ads — everything is included. Unlike Teleparty, KoalaSync's relay server is RAM-only with zero data collection or user accounts required.", + "FAQ_A2": "100% free and open source under the MIT License. No premium tiers, no locked features, no ads, everything is included. Unlike Teleparty, KoalaSync's relay server is RAM-only with zero data collection or user accounts required.", "FAQ_Q3": "Does KoalaSync work with Emby, Jellyfin and self-hosted media servers?", "FAQ_A3": "Yes. KoalaSync detects any standard HTML5 video element, which means it works perfectly with Emby, Jellyfin, Plex, and any custom self-hosted streaming setup. You can also self-host the KoalaSync relay server via Docker for complete data sovereignty.", "FAQ_Q4": "Which browsers and platforms support KoalaSync?", - "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave, and all Chromium-based browsers. Install it directly from the Chrome Web Store or Firefox Add-ons — no manual configuration needed.", + "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave, and all Chromium-based browsers. Install it directly from the Chrome Web Store or Firefox Add-ons, no manual configuration needed.", "FAQ_Q5": "Do all my friends need the extension installed?", - "FAQ_A5": "Yes, each participant needs KoalaSync installed — but there's no sign-up or account creation. Simply click the invitation link, install the extension if you haven't already, and you'll join the room automatically in seconds.", + "FAQ_A5": "Yes, each participant needs KoalaSync installed, but there's no sign-up or account creation. Simply click the invitation link, install the extension if you haven't already, and you'll join the room automatically in seconds.", "FAQ_Q6": "Is my data safe? What if I don't trust the official server?", - "FAQ_A6": "Completely safe. KoalaSync's relay server is RAM-only — all session data is permanently deleted the moment you leave the room. No database, no logging, no analytics, no accounts. And if you prefer full control: you can self-host your own private relay server via Docker in minutes. The entire codebase is open source and auditable on GitHub.", + "FAQ_A6": "Completely safe. KoalaSync's relay server is RAM-only, all session data is permanently deleted the moment you leave the room. No database, no logging, no analytics, no accounts. And if you prefer full control: you can self-host your own private relay server via Docker in minutes. The entire codebase is open source and auditable on GitHub.", "FAQ_Q7": "Can I fix quiet dialogue and loud explosions when watching videos in the browser?", - "FAQ_A7": "Yes. KoalaSync 2.2.0 includes a built-in audio compressor that reduces the gap between quiet and loud parts of your video. It runs locally via the Web Audio API — no audio data ever leaves your computer. Open the popup, create a room, go to Settings → Audio Processing, toggle the compressor on, and pick a preset. Works on Netflix, Prime Video, Disney+, YouTube, and any HTML5 video site.", + "FAQ_A7": "Yes. KoalaSync 2.2.0 includes a built-in audio compressor that reduces the gap between quiet and loud parts of your video. It runs locally via the Web Audio API, no audio data ever leaves your computer. Open the popup, create a room, go to Settings → Audio Processing, toggle the compressor on, and pick a preset. Works on Netflix, Prime Video, Disney+, YouTube, and any HTML5 video site.", "HOWTO_TITLE": "How to synchronize videos with friends using KoalaSync", "HOWTO_DESC": "Watch any video in perfect sync with friends across YouTube, Netflix, Twitch and more. No sign-up, no tracking.", "HOWTO_STEP_1_NAME": "Install the browser extension", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Host Control", "MOCK_HOST_CONTROL_TOGGLE": "Only I can control playback", "LABEL_SELECT_VIDEO": "Select Video", - "OPTION_SELECT_TAB": "-- Select a Tab --" + "OPTION_SELECT_TAB": "-- Select a Tab --", + "THEME_TOGGLE_LABEL": "Toggle light/dark mode", + "FAQ_SHOW_ALL": "Show all questions", + "FAQ_HIDE_ALL": "Hide questions", + "SELF_SHOW_SETUP": "Show setup guide", + "SELF_HIDE_SETUP": "Hide setup guide", + "HERO_TRUST": "Free · Open source · No account needed" } diff --git a/website/locales/es.json b/website/locales/es.json index aae2251..11f63be 100644 --- a/website/locales/es.json +++ b/website/locales/es.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "es_ES", - "META_TITLE": "KoalaSync | Sincroniza Netflix, YouTube y cualquier video con amigos", - "META_DESCRIPTION": "Mira Netflix, YouTube, Twitch y cualquier video HTML5 en perfecta sincronización con amigos. Extensión de navegador gratuita, de código abierto y sin necesidad de registro.", - "SCHEMA_APP_DESC": "Mira Netflix, YouTube, Twitch y cualquier video HTML5 en perfecta sincronización con amigos. Extensión de navegador gratuita, de código abierto y sin necesidad de registro.", + "META_TITLE": "KoalaSync | Watch party para Netflix, YouTube y más", + "META_DESCRIPTION": "Watch party en Netflix, YouTube, Twitch y cualquier vídeo HTML5. Extensión gratuita y open source para Chrome y Firefox. Sin cuenta, sin rastreo, sin anuncios.", + "SCHEMA_APP_DESC": "Watch party en Netflix, YouTube, Twitch y cualquier vídeo HTML5. Extensión gratuita y open source para Chrome y Firefox. Sin cuenta, sin rastreo, sin anuncios.", "OG_TITLE": "KoalaSync | Sincroniza Netflix, Emby, Jellyfin y casi cualquier video con amigos", "OG_DESCRIPTION": "Mira Netflix, Emby, Jellyfin, YouTube, Twitch y casi cualquier video HTML5 en perfecta sincronización. Extensión de navegador de código abierto y respetuosa con la privacidad para Chrome y Firefox.", "TWITTER_TITLE": "KoalaSync | Sincroniza Netflix, Emby, Jellyfin y casi cualquier video con amigos – Extensión de navegador", "TWITTER_DESCRIPTION": "Mira Netflix, Emby, Jellyfin, YouTube, Twitch y casi cualquier video HTML5 en perfecta sincronización con amigos. Extensión de navegador de código abierto y respetuosa con la privacidad para Chrome y Firefox.", "NAV_FEATURES": "Características", "NAV_HOW_IT_WORKS": "Cómo funciona", - "HERO_TITLE": "Miren juntos.Sincronización perfecta.", - "HERO_SUBTITLE": "Tu noche de películas a distancia sin retrasos. Sin registros ni recopilación de datos. Solo comparte un enlace y miren juntos.", + "HERO_TITLE": "Convierte cualquier vídeo en una watch party.", + "HERO_SUBTITLE": "Tu noche de cine a distancia, sin retrasos. Sin cuenta, sin rastreo, sin anuncios. Comparte un enlace y dale al play juntos.", "HERO_MASCOT_ALT": "Un lindo koala de pie mirando hacia abajo a los botones de descarga", "DEMO_SYNC": "Sincronizado", - "DEMO_HINT": "Demo en vivo — pulsa play en cualquiera de las pestañas: KoalaSync mantiene ambas sincronizadas.", + "DEMO_HINT": "Demo en vivo: pulsa play en cualquiera de las pestañas y KoalaSync mantiene ambas sincronizadas.", "DEMO_NO_ROOM": "Aún sin conexión", "DEMO_CREATE_ROOM": "Crear sala", "DEMO_JOINED": "Conectado a la sala", @@ -198,7 +198,7 @@ "ALT_TELEPARTY_LIMITS_TITLE": "Limitaciones reales", "ALT_TELEPARTY_LIMITS_BODY": "KoalaSync no hace milagros ni pretende ocultar sus limitaciones. Actualmente, solo funciona en navegadores de escritorio; no cuenta con chat integrado ni aplicación móvil.

La compatibilidad también depende del navegador y del reproductor de vídeo utilizado. Aunque KoalaSync debería funcionar con casi cualquier reproductor estándar de navegador, los sitios web pueden modificar sus reproductores, el comportamiento del DRM o las restricciones del navegador en cualquier momento.

KoalaSync no tiene ninguna relación con Netflix, Disney+, Prime Video, YouTube, Teleparty, Emby, Jellyfin, Plex ni ninguna otra marca mencionada aquí. Dichos nombres se utilizan únicamente para ilustrar casos de uso habituales.", "ALT_TELEPARTY_SUMMARY_TITLE": "Resumen", - "ALT_TELEPARTY_SUMMARY_BODY": "Si buscas chat integrado o compatibilidad con dispositivos móviles, Teleparty podría ser la mejor opción. Si prefieres una solución gratuita y de código abierto para sincronizar navegadores de escritorio que funcione con casi cualquier reproductor de vídeo convencional —incluidos servidores multimedia de alojamiento propio como Emby, Jellyfin y Plex—, KoalaSync es probablemente la alternativa más adecuada.", + "ALT_TELEPARTY_SUMMARY_BODY": "Si buscas chat integrado o compatibilidad con dispositivos móviles, Teleparty podría ser la mejor opción. Si prefieres una solución gratuita y de código abierto para sincronizar navegadores de escritorio que funcione con casi cualquier reproductor de vídeo convencional, incluidos servidores multimedia de alojamiento propio como Emby, Jellyfin y Plex, KoalaSync es probablemente la alternativa más adecuada.", "ALT_SCREEN_TITLE": "KoalaSync frente a compartir pantalla: ¿cuándo es mejor la sincronización de vídeo?", "ALT_SCREEN_META_DESC": "Una comparativa práctica entre KoalaSync y la función de compartir pantalla para noches de cine a distancia, analizando aspectos como el control de reproducción, la calidad de vídeo, la privacidad, los subtítulos y la visualización desde el navegador.", "ALT_SCREEN_INTRO": "Compartir pantalla funciona y, sinceramente, a veces es suficiente. Una persona comparte su pantalla, las demás la ven y listo.

Sin embargo, para sesiones de cine más largas o para ver episodios en grupo, puede resultar molesto. La calidad del vídeo depende de la velocidad de subida, la CPU y el navegador de quien comparte, así como de la compresión que apliquen aplicaciones como Discord, Teamspeak, Zoom u otras plataformas de videollamada. Además, solo una persona tiene el control real de la reproducción.", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Control del anfitrión", "MOCK_HOST_CONTROL_TOGGLE": "Solo yo puedo controlar la reproducción", "LABEL_SELECT_VIDEO": "Seleccionar video", - "OPTION_SELECT_TAB": "-- Selecciona una pestaña --" + "OPTION_SELECT_TAB": "-- Selecciona una pestaña --", + "THEME_TOGGLE_LABEL": "Cambiar modo claro/oscuro", + "FAQ_SHOW_ALL": "Mostrar todas las preguntas", + "FAQ_HIDE_ALL": "Ocultar preguntas", + "SELF_SHOW_SETUP": "Mostrar guía de instalación", + "SELF_HIDE_SETUP": "Ocultar guía de instalación", + "HERO_TRUST": "Gratis · Código abierto · Sin cuenta" } diff --git a/website/locales/fr.json b/website/locales/fr.json index 749be64..9409150 100644 --- a/website/locales/fr.json +++ b/website/locales/fr.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "fr_FR", - "META_TITLE": "KoalaSync | Synchronisez Netflix, YouTube et n'importe quelle vidéo avec vos amis", - "META_DESCRIPTION": "Regardez Netflix, YouTube, Twitch et des vidéos HTML5 en synchro avec vos amis. Extension de navigateur gratuite et open-source. Aucune inscription requise.", - "SCHEMA_APP_DESC": "Regardez Netflix, YouTube, Twitch et des vidéos HTML5 en synchro avec vos amis. Extension de navigateur gratuite et open-source. Aucune inscription requise.", + "META_TITLE": "KoalaSync | Watch party pour Netflix, YouTube et plus", + "META_DESCRIPTION": "Organisez une watch party sur Netflix, YouTube, Twitch et toute vidéo HTML5. Extension libre et gratuite pour Chrome et Firefox. Sans compte, sans pistage, sans pub.", + "SCHEMA_APP_DESC": "Organisez une watch party sur Netflix, YouTube, Twitch et toute vidéo HTML5. Extension libre et gratuite pour Chrome et Firefox. Sans compte, sans pistage, sans pub.", "OG_TITLE": "KoalaSync | Synchronisez Netflix, Emby, Jellyfin et presque toutes les vidéos avec vos amis", "OG_DESCRIPTION": "Regardez Netflix, Emby, Jellyfin, YouTube, Twitch et presque n'importe quelle vidéo HTML5 en parfaite synchronisation. Extension de navigateur open-source et respectueuse de la vie privée pour Chrome et Firefox.", "TWITTER_TITLE": "KoalaSync | Synchronisez Netflix, Emby, Jellyfin et presque toutes les vidéos avec vos amis – Extension de navigateur", "TWITTER_DESCRIPTION": "Regardez Netflix, Emby, Jellyfin, YouTube, Twitch et presque n'importe quelle vidéo HTML5 en parfaite synchronisation avec vos amis. Extension de navigateur open-source et respectueuse de la vie privée pour Chrome et Firefox.", "NAV_FEATURES": "Fonctionnalités", "NAV_HOW_IT_WORKS": "Comment ça marche", - "HERO_TITLE": "Regardez ensemble.Synchronisation parfaite.", - "HERO_SUBTITLE": "Votre soirée cinéma à distance sans décalage. Pas d'inscription, pas de collecte de données. Partagez simplement un lien et regardez ensemble.", + "HERO_TITLE": "Transformez n'importe quelle vidéo en watch party.", + "HERO_SUBTITLE": "Votre soirée ciné à distance, sans décalage. Pas de compte, pas de tracking, pas de pub. Partagez un lien et lancez la lecture ensemble.", "HERO_MASCOT_ALT": "Un koala mignon debout et regardant vers le bas les boutons de téléchargement", "DEMO_SYNC": "Synchronisé", - "DEMO_HINT": "Démo interactive — lancez la lecture dans un onglet : KoalaSync garde les deux synchronisés.", + "DEMO_HINT": "Démo interactive : lancez la lecture dans un onglet, KoalaSync garde les deux synchronisés.", "DEMO_NO_ROOM": "Pas encore connecté", "DEMO_CREATE_ROOM": "Créer un salon", "DEMO_JOINED": "Salon rejoint", @@ -49,13 +49,13 @@ "FEATURE_3_TITLE": "Aucun compte / Vie privée garantie", "FEATURE_3_DESC": "Pas d'inscription, pas de suivi, pas de stockage de données. Le serveur fonctionne entièrement dans une RAM éphémère et supprime votre salon dès votre départ.", "FEATURE_4_TITLE": "Support HTML5 universel", - "FEATURE_4_DESC": "Fonctionne sur YouTube, Twitch, Netflix, Jellyfin, Emby et presque n'importe quelle page web standard contenant un élément vidéo HTML5. Également compatible avec les installations personnalisées. Aucune donnée vidéo n'est envoyée à nos serveurs — seules les métadonnées de synchronisation.", + "FEATURE_4_DESC": "Fonctionne sur YouTube, Twitch, Netflix, Jellyfin, Emby et presque n'importe quelle page web standard contenant un élément vidéo HTML5. Également compatible avec les installations personnalisées. Aucune donnée vidéo n'est envoyée à nos serveurs, seules les métadonnées de synchronisation.", "FEATURE_5_TITLE": "Hébergeable soi-même & prêt pour Docker", "FEATURE_5_DESC": "Nos serveurs officiels sont gratuits et rapides, mais vous pouvez prendre le contrôle total si vous le souhaitez. Lancez votre propre serveur relais privé en quelques secondes via Docker.", "FEATURE_6_TITLE": "Invitations instantanées / Rejoindre en 1 clic", "FEATURE_6_DESC": "Pas d'adresses IP ou de mots de passe à échanger. Partagez un lien d'invitation généré pour permettre à vos amis de rejoindre automatiquement votre salon en un seul clic.", "FEATURE_7_TITLE": "Égalisation du volume / Compresseur audio", - "FEATURE_7_DESC": "Fini de jouer avec le bouton du volume. Le compresseur audio intégré booste les dialogues discrets et adoucit les explosions. Fonctionne sur Netflix, Prime Video, Disney+, YouTube et toute vidéo HTML5. Entièrement local — aucune donnée audio ne quitte votre ordinateur.", + "FEATURE_7_DESC": "Fini de jouer avec le bouton du volume. Le compresseur audio intégré booste les dialogues discrets et adoucit les explosions. Fonctionne sur Netflix, Prime Video, Disney+, YouTube et toute vidéo HTML5. Entièrement local, aucune donnée audio ne quitte votre ordinateur.", "FEATURE_8_TITLE": "Open Source (MIT License)", "FEATURE_8_DESC": "Tout le code source est publiquement auditable sur GitHub. Pas de boite noire, pas de blob proprietaire - transparence totale du serveur relais a l'extension de navigateur.", "COMP_TITLE": "KoalaSync vs Teleparty", @@ -123,21 +123,21 @@ "FAQ_TITLE": "Foire aux questions", "FAQ_SUBTITLE": "Tout ce que vous devez savoir pour regarder des vidéos en parfaite synchronisation.", "FAQ_Q1": "Puis-je regarder Netflix, Emby ou Jellyfin en synchronisation avec des amis ?", - "FAQ_A1": "Oui ! KoalaSync fonctionne avec Netflix, YouTube, Twitch et tout site avec un lecteur vidéo HTML5 — y compris Emby, Jellyfin et les serveurs multimédia auto-hébergés. Installez l'extension, créez un salon, partagez le lien et regardez en parfaite synchronisation.", + "FAQ_A1": "Oui ! KoalaSync fonctionne avec Netflix, YouTube, Twitch et tout site avec un lecteur vidéo HTML5, y compris Emby, Jellyfin et les serveurs multimédia auto-hébergés. Installez l'extension, créez un salon, partagez le lien et regardez en parfaite synchronisation.", "FAQ_Q_VIDEO_ACCESS": "KoalaSync diffuse-t-il la vidéo à mes amis ?", "FAQ_A_VIDEO_ACCESS": "Non. KoalaSync ne diffuse, n’héberge, ne partage et ne contourne aucun accès aux contenus vidéo. Chaque personne regarde la vidéo localement dans son propre navigateur et doit disposer de son propre accès au site ou au service de streaming, par exemple son propre compte Netflix. KoalaSync synchronise uniquement les actions de lecture comme lecture, pause et recherche dans la vidéo.", "FAQ_Q2": "KoalaSync est-il une alternative gratuite à Teleparty ?", - "FAQ_A2": "100 % gratuit et open source sous licence MIT. Aucun niveau premium, aucune fonctionnalité verrouillée, aucune publicité. Contrairement à Teleparty, le serveur relay de KoalaSync fonctionne uniquement en RAM — sans collecte de données ni comptes utilisateur.", + "FAQ_A2": "100 % gratuit et open source sous licence MIT. Aucun niveau premium, aucune fonctionnalité verrouillée, aucune publicité. Contrairement à Teleparty, le serveur relay de KoalaSync fonctionne uniquement en RAM, sans collecte de données ni comptes utilisateur.", "FAQ_Q3": "KoalaSync fonctionne-t-il avec Emby, Jellyfin et les serveurs multimédia auto-hébergés ?", "FAQ_A3": "Oui. KoalaSync détecte tout élément vidéo HTML5 standard et fonctionne parfaitement avec Emby, Jellyfin, Plex et toute configuration de streaming personnalisée. Vous pouvez également auto-héberger le serveur relay via Docker.", "FAQ_Q4": "Quels navigateurs et plateformes prennent en charge KoalaSync ?", "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave et tous les navigateurs basés sur Chromium. Installez-le depuis le Chrome Web Store ou les modules complémentaires Firefox.", "FAQ_Q5": "Tous mes amis doivent-ils installer l'extension ?", - "FAQ_A5": "Oui, chaque participant a besoin de KoalaSync — mais sans inscription ni création de compte. Cliquez simplement sur le lien d'invitation, installez l'extension si nécessaire et vous rejoignez automatiquement le salon.", + "FAQ_A5": "Oui, chaque participant a besoin de KoalaSync, mais sans inscription ni création de compte. Cliquez simplement sur le lien d'invitation, installez l'extension si nécessaire et vous rejoignez automatiquement le salon.", "FAQ_Q6": "Mes données sont-elles en sécurité ? Et si je ne fais pas confiance au serveur officiel ?", - "FAQ_A6": "Totalement sûr. Le serveur relay de KoalaSync fonctionne uniquement en RAM — toutes les données de session sont supprimées dès que vous quittez le salon. Aucune base de données, aucun journal, aucune analyse, aucun compte. Si vous préférez un contrôle total : hébergez votre propre serveur relay privé via Docker en quelques minutes. Le code source est entièrement open source et vérifiable sur GitHub.", + "FAQ_A6": "Totalement sûr. Le serveur relay de KoalaSync fonctionne uniquement en RAM, toutes les données de session sont supprimées dès que vous quittez le salon. Aucune base de données, aucun journal, aucune analyse, aucun compte. Si vous préférez un contrôle total : hébergez votre propre serveur relay privé via Docker en quelques minutes. Le code source est entièrement open source et vérifiable sur GitHub.", "FAQ_Q7": "Puis-je atténuer les dialogues discrets et les explosions fortes en regardant des vidéos dans le navigateur ?", - "FAQ_A7": "Oui. KoalaSync 2.2.0 inclut un compresseur audio intégré qui réduit l'écart entre les parties silencieuses et bruyantes de votre vidéo. Il fonctionne localement via l'API Web Audio — aucune donnée audio ne quitte votre ordinateur. Ouvrez le popup, créez un salon, allez dans Paramètres → Audio Processing, activez le compresseur et choisissez un préréglage. Fonctionne sur Netflix, Prime Video, Disney+, YouTube et tout site vidéo HTML5.", + "FAQ_A7": "Oui. KoalaSync 2.2.0 inclut un compresseur audio intégré qui réduit l'écart entre les parties silencieuses et bruyantes de votre vidéo. Il fonctionne localement via l'API Web Audio, aucune donnée audio ne quitte votre ordinateur. Ouvrez le popup, créez un salon, allez dans Paramètres → Audio Processing, activez le compresseur et choisissez un préréglage. Fonctionne sur Netflix, Prime Video, Disney+, YouTube et tout site vidéo HTML5.", "HOWTO_TITLE": "Comment synchroniser des vidéos avec des amis avec KoalaSync", "HOWTO_DESC": "Regardez des vidéos en parfaite synchronisation avec vos amis sur YouTube, Netflix, Twitch et plus. Sans inscription, sans pistage.", "HOWTO_STEP_1_NAME": "Installer l'extension", @@ -198,7 +198,7 @@ "ALT_TELEPARTY_LIMITS_TITLE": "Limites en toute transparence", "ALT_TELEPARTY_LIMITS_BODY": "KoalaSync n'est pas magique et ne cherche pas à dissimuler ses limites. Actuellement, il ne fonctionne que sur les navigateurs de bureau. Il ne dispose ni de messagerie intégrée ni d'application mobile.

La compatibilité dépend également du navigateur et du lecteur vidéo. KoalaSync devrait fonctionner avec presque tous les lecteurs vidéo standard, mais les sites web peuvent modifier leurs lecteurs, la gestion des DRM ou les restrictions du navigateur à tout moment.

KoalaSync n'est affilié ni à Netflix, Disney+, Prime Video, YouTube, Teleparty, Emby, Jellyfin, Plex, ni à aucune autre marque mentionnée ici. Ces noms sont utilisés uniquement pour illustrer des cas d'utilisation courants.", "ALT_TELEPARTY_SUMMARY_TITLE": "Résumé", - "ALT_TELEPARTY_SUMMARY_BODY": "Si vous recherchez une fonction de chat intégrée ou une prise en charge mobile, Teleparty pourrait être la meilleure option. Si vous préférez une solution gratuite et open source de synchronisation via navigateur (sur ordinateur) compatible avec presque tous les lecteurs vidéo classiques — y compris les serveurs multimédias auto-hébergés comme Emby, Jellyfin et Plex —, alors KoalaSync est probablement le choix idéal.", + "ALT_TELEPARTY_SUMMARY_BODY": "Si vous recherchez une fonction de chat intégrée ou une prise en charge mobile, Teleparty pourrait être la meilleure option. Si vous préférez une solution gratuite et open source de synchronisation via navigateur (sur ordinateur) compatible avec presque tous les lecteurs vidéo classiques, y compris les serveurs multimédias auto-hébergés comme Emby, Jellyfin et Plex, alors KoalaSync est probablement le choix idéal.", "ALT_SCREEN_TITLE": "KoalaSync vs partage d'écran : quand la synchronisation vidéo est-elle préférable ?", "ALT_SCREEN_META_DESC": "Une comparaison pratique entre KoalaSync et le partage d'écran pour les soirées cinéma à distance : contrôle de la lecture, qualité vidéo, confidentialité, sous-titres et visionnage via navigateur.", "ALT_SCREEN_INTRO": "Le partage d'écran fonctionne et, honnêtement, cela suffit parfois. Une personne partage son écran, les autres regardent, et le tour est joué.

Cependant, pour des soirées cinéma plus longues ou pour regarder des épisodes ensemble, cela peut devenir contraignant. La qualité vidéo dépend de la vitesse d'envoi (upload), du processeur et du navigateur de la personne qui partage, ainsi que de la compression appliquée par Discord, Teamspeak, Zoom ou toute autre application d'appel. De plus, une seule personne contrôle réellement la lecture.", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Contrôle de l'hôte", "MOCK_HOST_CONTROL_TOGGLE": "Seul moi peut contrôler la lecture", "LABEL_SELECT_VIDEO": "Choisir une vidéo", - "OPTION_SELECT_TAB": "-- Choisir un onglet --" + "OPTION_SELECT_TAB": "-- Choisir un onglet --", + "THEME_TOGGLE_LABEL": "Basculer mode clair/sombre", + "FAQ_SHOW_ALL": "Afficher toutes les questions", + "FAQ_HIDE_ALL": "Masquer les questions", + "SELF_SHOW_SETUP": "Afficher le guide d'installation", + "SELF_HIDE_SETUP": "Masquer le guide d'installation", + "HERO_TRUST": "Gratuit · Open source · Sans compte" } diff --git a/website/locales/it.json b/website/locales/it.json index 2689e0a..9d5f63d 100644 --- a/website/locales/it.json +++ b/website/locales/it.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "it_IT", - "META_TITLE": "KoalaSync | Sincronizza Netflix, YouTube e qualsiasi video con i tuoi amici", - "META_DESCRIPTION": "Guarda Netflix, YouTube, Twitch e qualsiasi video HTML5 in perfetta sincronia. Estensione gratuita, open source e senza registrazione.", - "SCHEMA_APP_DESC": "Guarda Netflix, YouTube, Twitch e qualsiasi video HTML5 in perfetta sincronia. Estensione gratuita, open source e senza registrazione.", + "META_TITLE": "KoalaSync | Watch party per Netflix, YouTube e ogni video", + "META_DESCRIPTION": "Watch party su Netflix, YouTube, Twitch e qualsiasi video HTML5. Estensione gratuita e open source per Chrome e Firefox. Senza account, tracking né pubblicità.", + "SCHEMA_APP_DESC": "Watch party su Netflix, YouTube, Twitch e qualsiasi video HTML5. Estensione gratuita e open source per Chrome e Firefox. Senza account, tracking né pubblicità.", "OG_TITLE": "KoalaSync | Sincronizza Netflix, Emby, Jellyfin e video web con i tuoi amici", "OG_DESCRIPTION": "Guarda video in perfetta sincronia con i tuoi amici. Estensione open source per Chrome e Firefox incentrata sulla privacy.", "TWITTER_TITLE": "KoalaSync | Sincronizza video in streaming con i tuoi amici", "TWITTER_DESCRIPTION": "Guarda video insieme ai tuoi amici in perfetta sincronia. Open source e rispettoso della privacy.", "NAV_FEATURES": "Funzionalità", "NAV_HOW_IT_WORKS": "Come Funziona", - "HERO_TITLE": "Guardate Insieme.Sincronia Perfetta.", - "HERO_SUBTITLE": "La tua serata cinema a distanza senza ritardi. Nessun account, nessun dato raccolto. Condividi un link e guardate insieme.", + "HERO_TITLE": "Trasforma qualsiasi video in una watch party.", + "HERO_SUBTITLE": "La tua serata film a distanza, senza lag. Niente account, niente tracciamento, niente pubblicità. Condividi un link e premete play insieme.", "HERO_MASCOT_ALT": "Un simpatico koala che guarda i pulsanti di download", "DEMO_SYNC": "Sincronizzato", - "DEMO_HINT": "Demo dal vivo — premi play in una delle schede: KoalaSync le mantiene sincronizzate.", + "DEMO_HINT": "Demo dal vivo: premi play in una delle schede e KoalaSync le mantiene sincronizzate.", "DEMO_NO_ROOM": "Non ancora connesso", "DEMO_CREATE_ROOM": "Crea stanza", "DEMO_JOINED": "Entrato nella stanza", @@ -198,7 +198,7 @@ "ALT_TELEPARTY_LIMITS_TITLE": "Limiti dichiarati apertamente", "ALT_TELEPARTY_LIMITS_BODY": "KoalaSync non fa miracoli e non cerca di nascondere i propri limiti. Attualmente funziona solo su browser desktop; non dispone di chat integrata né di un'app per dispositivi mobili.

La compatibilità dipende anche dal browser e dal lettore video utilizzato. KoalaSync dovrebbe funzionare con quasi tutti i normali lettori video dei browser, ma i siti web possono modificare in qualsiasi momento i propri lettori, la gestione dei DRM o le restrizioni del browser.

KoalaSync non è affiliato a Netflix, Disney+, Prime Video, YouTube, Teleparty, Emby, Jellyfin, Plex o qualsiasi altro marchio qui menzionato. I nomi sono utilizzati esclusivamente per illustrare i tipici scenari di utilizzo.", "ALT_TELEPARTY_SUMMARY_TITLE": "Riepilogo", - "ALT_TELEPARTY_SUMMARY_BODY": "Se cerchi una chat integrata o il supporto per dispositivi mobili, Teleparty potrebbe essere la scelta più adatta. Se invece preferisci una soluzione gratuita e open-source per la sincronizzazione tra browser desktop, compatibile con quasi tutti i comuni lettori video — inclusi i media server self-hosted come Emby, Jellyfin e Plex — KoalaSync è probabilmente l'opzione migliore.", + "ALT_TELEPARTY_SUMMARY_BODY": "Se cerchi una chat integrata o il supporto per dispositivi mobili, Teleparty potrebbe essere la scelta più adatta. Se invece preferisci una soluzione gratuita e open-source per la sincronizzazione tra browser desktop, compatibile con quasi tutti i comuni lettori video, inclusi i media server self-hosted come Emby, Jellyfin e Plex. KoalaSync è probabilmente l'opzione migliore.", "ALT_SCREEN_TITLE": "KoalaSync vs condivisione schermo: quando è meglio la sincronizzazione video?", "ALT_SCREEN_META_DESC": "Un confronto pratico tra KoalaSync e la condivisione dello schermo per serate film a distanza, analizzando controllo della riproduzione, qualità video, privacy, sottotitoli e visione tramite browser.", "ALT_SCREEN_INTRO": "La condivisione dello schermo funziona e, a dire il vero, a volte è sufficiente. Una persona condivide il proprio schermo, le altre guardano e il gioco è fatto.

Tuttavia, per serate film più lunghe o per guardare insieme degli episodi, può diventare scomoda. La qualità video dipende dalla velocità di upload, dalla CPU e dal browser di chi condivide, oltre che dalla compressione applicata da app come Discord, Teamspeak, Zoom o altre piattaforme di chiamata. Inoltre, solo una persona ha il controllo effettivo della riproduzione.", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Controllo host", "MOCK_HOST_CONTROL_TOGGLE": "Solo io posso controllare la riproduzione", "LABEL_SELECT_VIDEO": "Seleziona Video", - "OPTION_SELECT_TAB": "-- Seleziona una Scheda --" + "OPTION_SELECT_TAB": "-- Seleziona una Scheda --", + "THEME_TOGGLE_LABEL": "Attiva/disattiva tema chiaro/scuro", + "FAQ_SHOW_ALL": "Mostra tutte le domande", + "FAQ_HIDE_ALL": "Nascondi le domande", + "SELF_SHOW_SETUP": "Mostra la guida all'installazione", + "SELF_HIDE_SETUP": "Nascondi la guida", + "HERO_TRUST": "Gratuito · Open source · Senza account" } diff --git a/website/locales/ja.json b/website/locales/ja.json index 07644e6..eabab32 100644 --- a/website/locales/ja.json +++ b/website/locales/ja.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "ja_JP", - "META_TITLE": "KoalaSync | Netflix、YouTube、あらゆる動画を友達と同期視聴", - "META_DESCRIPTION": "Netflix、YouTube、Twitch、およびあらゆるHTML5動画を友達と完全に同期して視聴。ChromeおよびFirefox用の無料のオープンソースブラウザ拡張機能。登録不要。", - "SCHEMA_APP_DESC": "Netflix、YouTube、Twitch、およびあらゆるHTML5動画を友達と完全に同期して視聴。ChromeおよびFirefox用の無料のオープンソースブラウザ拡張機能。登録不要。", + "META_TITLE": "KoalaSync | Netflix・YouTube対応ウォッチパーティー拡張機能", + "META_DESCRIPTION": "Netflix、YouTube、TwitchなどあらゆるHTML5動画でウォッチパーティー。Chrome・Firefox向けの無料オープンソース拡張機能。アカウント不要、トラッキングなし、広告なし。", + "SCHEMA_APP_DESC": "Netflix、YouTube、TwitchなどあらゆるHTML5動画でウォッチパーティー。Chrome・Firefox向けの無料オープンソース拡張機能。アカウント不要、トラッキングなし、広告なし。", "OG_TITLE": "KoalaSync | Netflix、Emby、Jellyfin、ほぼすべての動画を友達と同期", "OG_DESCRIPTION": "Netflix、Emby、Jellyfin、YouTube、Twitch、ほぼすべてのHTML5動画を完全に同期して視聴。ChromeおよびFirefox用のプライバシー優先のオープンソースブラウザ拡張機能。", "TWITTER_TITLE": "KoalaSync | Netflix、Emby、Jellyfin、ほぼすべての動画を友達と同期 – ブラウザ拡張機能", "TWITTER_DESCRIPTION": "Netflix、Emby、Jellyfin、YouTube、Twitch、ほぼすべてのHTML5動画を友達と完全に同期して視聴。ChromeおよびFirefox用のプライバシー優先のオープンソースブラウザ拡張機能。", "NAV_FEATURES": "機能", "NAV_HOW_IT_WORKS": "仕組み", - "HERO_TITLE": "一緒に観よう。完璧に同期。", - "HERO_SUBTITLE": "遅延のないリモート映画鑑賞。登録不要、データ収集なし。リンクを共有するだけで、一緒に視聴できます。", + "HERO_TITLE": "どんな動画もウォッチパーティーに。", + "HERO_SUBTITLE": "離れていても一緒に映画ナイト。アカウント不要、トラッキングなし、広告なし。リンクを共有して、一緒に再生するだけ。", "HERO_MASCOT_ALT": "ダウンロードボタンを見下ろしているかわいいコアラ", "DEMO_SYNC": "同期中", - "DEMO_HINT": "ライブデモ — どちらかのタブで再生すると、KoalaSyncが両方を同期させます。", + "DEMO_HINT": "ライブデモ:どちらかのタブで再生すると、KoalaSyncが両方を同期させます。", "DEMO_NO_ROOM": "未接続", "DEMO_CREATE_ROOM": "ルームを作成", "DEMO_JOINED": "ルームに参加", @@ -49,13 +49,13 @@ "FEATURE_3_TITLE": "アカウント不要 / 純粋なプライバシー", "FEATURE_3_DESC": "登録不要、追跡なし、履歴も残りません。サーバーは一時的なメモリ(RAM)上でのみ動作し、退出時にルームを完全に消去します。", "FEATURE_4_TITLE": "ユニバーサルHTML5サポート", - "FEATURE_4_DESC": "YouTube、Twitch、Netflix、Jellyfin、Emby、およびHTML5ビデオ要素を含むほぼすべての標準的なWebページで動作します。独自のセルフホスト設定とも互換性があります。No video data is ever sent to our servers — only synchronization metadata.", + "FEATURE_4_DESC": "YouTube、Twitch、Netflix、Jellyfin、Emby、およびHTML5ビデオ要素を含むほぼすべての標準的なWebページで動作します。独自のセルフホスト設定とも互換性があります。動画データがサーバーに送信されることはなく、同期用のメタデータのみが送信されます。", "FEATURE_5_TITLE": "セルフホスト可能&Docker対応", "FEATURE_5_DESC": "公式サーバーは無料で高速ですが、必要に応じて独自のサーバーを構築できます。Dockerを使用して、数秒でプライベートリレーサーバーを起動できます。", "FEATURE_6_TITLE": "インスタント招待 / 1クリック参加", "FEATURE_6_DESC": "IPアドレスやパスワードをやり取りする必要はありません。生成された招待リンクを友達に共有するだけで、1クリックで自動的にルームに参加できます。", "FEATURE_7_TITLE": "音量均等化 / オーディオコンプレッサー", - "FEATURE_7_DESC": "音量つまみをいじる必要はもうありません。内蔵オーディオコンプレッサーが小さな会話を強調し、大きな爆発音を抑えます。Netflix、Prime Video、Disney+、YouTube、あらゆるHTML5ビデオで動作。完全にローカル処理 — オーディオデータがコンピュータから送信されることはありません。", + "FEATURE_7_DESC": "音量つまみをいじる必要はもうありません。内蔵オーディオコンプレッサーが小さな会話を強調し、大きな爆発音を抑えます。Netflix、Prime Video、Disney+、YouTube、あらゆるHTML5ビデオで動作。完全にローカル処理され、オーディオデータがコンピュータから送信されることはありません。", "FEATURE_8_TITLE": "オープンソース(MITライセンス)", "FEATURE_8_DESC": "すべてのコードベースはGitHubで公開されており、誰でも監査可能です。ブラックボックスや独自のバイナリデータ(blob)は一切なく、中継サーバーからブラウザ拡張機能まで100%の透明性を確保しています。", "COMP_TITLE": "KoalaSync と Teleparty の比較", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "ホスト操作", "MOCK_HOST_CONTROL_TOGGLE": "自分だけが再生を操作できる", "LABEL_SELECT_VIDEO": "ビデオを選択", - "OPTION_SELECT_TAB": "-- タブを選択してください --" + "OPTION_SELECT_TAB": "-- タブを選択してください --", + "THEME_TOGGLE_LABEL": "ライト/ダークモード切り替え", + "FAQ_SHOW_ALL": "すべての質問を表示", + "FAQ_HIDE_ALL": "質問を隠す", + "SELF_SHOW_SETUP": "セットアップガイドを表示", + "SELF_HIDE_SETUP": "ガイドを隠す", + "HERO_TRUST": "無料 · オープンソース · アカウント不要" } diff --git a/website/locales/ko.json b/website/locales/ko.json index 36b9451..1383210 100644 --- a/website/locales/ko.json +++ b/website/locales/ko.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "ko_KR", - "META_TITLE": "KoalaSync | Netflix, YouTube 및 모든 비디오를 친구와 실시간 동기화 시청", - "META_DESCRIPTION": "Netflix, YouTube, Twitch 및 모든 HTML5 비디오를 친구들과 완벽하게 동기화하여 시청하세요. Chrome 및 Firefox용 무료 오픈 소스 브라우저 확장 프로그램. 가입 필요 없음.", - "SCHEMA_APP_DESC": "Netflix, YouTube, Twitch 및 모든 HTML5 비디오를 친구들과 완벽하게 동기화하여 시청하세요. Chrome 및 Firefox용 무료 오픈 소스 브라우저 확장 프로그램. 가입 필요 없음.", + "META_TITLE": "KoalaSync | 넷플릭스·유튜브 워치 파티 확장 프로그램", + "META_DESCRIPTION": "넷플릭스, 유튜브, 트위치 등 모든 HTML5 영상에서 워치 파티. 크롬·파이어폭스용 무료 오픈소스 확장 프로그램. 계정 없음, 추적 없음, 광고 없음.", + "SCHEMA_APP_DESC": "넷플릭스, 유튜브, 트위치 등 모든 HTML5 영상에서 워치 파티. 크롬·파이어폭스용 무료 오픈소스 확장 프로그램. 계정 없음, 추적 없음, 광고 없음.", "OG_TITLE": "KoalaSync | Netflix, Emby, Jellyfin 및 거의 모든 비디오를 친구와 동기화 시청", "OG_DESCRIPTION": "Netflix, Emby, Jellyfin, YouTube, Twitch 및 거의 모든 HTML5 비디오를 완벽하게 동기화하여 시청하세요. Chrome 및 Firefox용 개인정보 보호 중심 오픈 소스 브라우저 확장 프로그램.", "TWITTER_TITLE": "KoalaSync | Netflix, Emby, Jellyfin 및 거의 모든 비디오를 친구와 동기화 시청 – 브라우저 확장 프로그램", "TWITTER_DESCRIPTION": "Netflix, Emby, Jellyfin, YouTube, Twitch 및 거의 모든 HTML5 비디오를 친구들과 완벽하게 동기화하여 시청하세요. Chrome 및 Firefox용 개인정보 보호 중심 오픈 소스 브라우저 확장 프로그램.", "NAV_FEATURES": "특징", "NAV_HOW_IT_WORKS": "작동 방식", - "HERO_TITLE": "함께 시청하세요.완벽하게 동기화됩니다.", - "HERO_SUBTITLE": "지연 없는 원격 영화의 밤. 회원가입도, 데이터 수집도 없습니다. 링크를 공유하고 함께 시청하세요.", + "HERO_TITLE": "어떤 영상이든 워치 파티로.", + "HERO_SUBTITLE": "지연 없는 원격 영화의 밤. 계정 없음, 추적 없음, 광고 없음. 링크만 공유하고 함께 재생하세요.", "HERO_MASCOT_ALT": "다운로드 버튼을 내려다보고 서 있는 귀여운 코알라", "DEMO_SYNC": "동기화됨", - "DEMO_HINT": "라이브 데모 — 아무 탭에서나 재생을 누르면 KoalaSync가 두 탭을 동기화합니다.", + "DEMO_HINT": "라이브 데모: 아무 탭에서나 재생을 누르면 KoalaSync가 두 탭을 동기화합니다.", "DEMO_NO_ROOM": "아직 연결되지 않음", "DEMO_CREATE_ROOM": "방 만들기", "DEMO_JOINED": "방 참여됨", @@ -55,7 +55,7 @@ "FEATURE_6_TITLE": "즉시 초대 / 클릭 한 번으로 참여", "FEATURE_6_DESC": "IP 주소나 비밀번호를 교환할 필요가 없습니다. 생성된 초대 링크를 친구들과 공유하면 클릭 한 번으로 방에 자동으로 참여할 수 있습니다.", "FEATURE_7_TITLE": "볼륨 레벨링 / 오디오 압축기", - "FEATURE_7_DESC": "더 이상 볼륨 노브를 계속 조정하지 마세요. 내장 오디오 압축기가 조용한 대화를 증폭하고 큰 폭발음을 완화합니다. Netflix, Prime Video, Disney+, YouTube 및 모든 HTML5 비디오에서 작동합니다. 완전히 로컬에서 처리 — 오디오 데이터가 컴퓨터를 떠나지 않습니다.", + "FEATURE_7_DESC": "더 이상 볼륨 노브를 계속 조정하지 마세요. 내장 오디오 압축기가 조용한 대화를 증폭하고 큰 폭발음을 완화합니다. Netflix, Prime Video, Disney+, YouTube 및 모든 HTML5 비디오에서 작동합니다. 완전히 로컬에서 처리되며, 오디오 데이터가 컴퓨터를 떠나지 않습니다.", "FEATURE_8_TITLE": "오픈 소스 (MIT 라이선스)", "FEATURE_8_DESC": "모든 코드베이스는 GitHub에서 공개적으로 검토할 수 있습니다. 블랙박스나 독점적인 블롭(blob)이 전혀 없으며, 릴레이 서버부터 브라우저 확장 프로그램까지 100% 투명성을 보장합니다.", "COMP_TITLE": "KoalaSync 대 Teleparty", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "호스트 제어", "MOCK_HOST_CONTROL_TOGGLE": "나만 재생을 제어할 수 있음", "LABEL_SELECT_VIDEO": "비디오 선택", - "OPTION_SELECT_TAB": "-- 탭 선택 --" + "OPTION_SELECT_TAB": "-- 탭 선택 --", + "THEME_TOGGLE_LABEL": "라이트/다크 모드 전환", + "FAQ_SHOW_ALL": "모든 질문 보기", + "FAQ_HIDE_ALL": "질문 숨기기", + "SELF_SHOW_SETUP": "설치 가이드 보기", + "SELF_HIDE_SETUP": "가이드 숨기기", + "HERO_TRUST": "무료 · 오픈소스 · 계정 불필요" } diff --git a/website/locales/nl.json b/website/locales/nl.json index cf7664e..7581b34 100644 --- a/website/locales/nl.json +++ b/website/locales/nl.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "nl_NL", - "META_TITLE": "KoalaSync | Synchroniseer Netflix, YouTube & elke video met vrienden", - "META_DESCRIPTION": "Bekijk Netflix, YouTube, Twitch en elke HTML5-video in perfecte synchronisatie met vrienden. Gratis, open-source browserextensie voor Chrome en Firefox. Geen registratie nodig.", - "SCHEMA_APP_DESC": "Bekijk Netflix, YouTube, Twitch en elke HTML5-video in perfecte synchronisatie met vrienden. Gratis, open-source browserextensie voor Chrome en Firefox. Geen registratie nodig.", + "META_TITLE": "KoalaSync | Watch party voor Netflix, YouTube & elke video", + "META_DESCRIPTION": "Watch party op Netflix, YouTube, Twitch en elke HTML5-video. Gratis open-source extensie voor Chrome en Firefox. Geen account, geen tracking, geen reclame.", + "SCHEMA_APP_DESC": "Watch party op Netflix, YouTube, Twitch en elke HTML5-video. Gratis open-source extensie voor Chrome en Firefox. Geen account, geen tracking, geen reclame.", "OG_TITLE": "KoalaSync | Synchroniseer Netflix, Emby, Jellyfin & bijna elke video met vrienden", "OG_DESCRIPTION": "Bekijk Netflix, Emby, Jellyfin, YouTube, Twitch en bijna elke HTML5-video in perfecte synchronisatie. Privacy-first, open-source browserextensie voor Chrome & Firefox.", "TWITTER_TITLE": "KoalaSync | Synchroniseer Netflix, Emby, Jellyfin & bijna elke video met vrienden – Browserextensie", "TWITTER_DESCRIPTION": "Bekijk Netflix, Emby, Jellyfin, YouTube, Twitch en bijna elke HTML5-video in perfecte synchronisatie met vrienden. Privacy-first, open-source browserextensie voor Chrome en Firefox.", "NAV_FEATURES": "Functies", "NAV_HOW_IT_WORKS": "Hoe het werkt", - "HERO_TITLE": "Samen Kijken.Perfect Synchroniseren.", - "HERO_SUBTITLE": "Uw filmavond op afstand zonder vertraging. Geen registratie, geen gegevensverzameling. Deel gewoon een link en kijk samen.", + "HERO_TITLE": "Maak van elke video een watch party.", + "HERO_SUBTITLE": "Jouw filmavond op afstand, zonder vertraging. Geen account, geen tracking, geen advertenties. Deel een link en druk samen op play.", "HERO_MASCOT_ALT": "Een schattige koala die staat en naar beneden kijkt naar de downloadknoppen", "DEMO_SYNC": "Synchroon", - "DEMO_HINT": "Live demo — druk op play in een van de tabbladen: KoalaSync houdt beide synchroon.", + "DEMO_HINT": "Live demo: druk op play in een van de tabbladen en KoalaSync houdt beide synchroon.", "DEMO_NO_ROOM": "Nog niet verbonden", "DEMO_CREATE_ROOM": "Kamer aanmaken", "DEMO_JOINED": "In de kamer", @@ -49,13 +49,13 @@ "FEATURE_3_TITLE": "Geen accounts / Pure privacy", "FEATURE_3_DESC": "Geen registratie, geen tracking, geen permanente voetafdruk. De server draait volledig in het tijdelijke RAM en wist uw kamer wanneer u vertrekt.", "FEATURE_4_TITLE": "Universele HTML5-ondersteuning", - "FEATURE_4_DESC": "Werkt op YouTube, Twitch, Netflix, Jellyfin, Emby en bijna elke standaard webpagina met een HTML5-video-element. Ook compatibel met aangepaste zelfgehoste installaties. Er worden nooit videogegevens naar onze servers verzonden — alleen synchronisatiemetagegevens.", + "FEATURE_4_DESC": "Werkt op YouTube, Twitch, Netflix, Jellyfin, Emby en bijna elke standaard webpagina met een HTML5-video-element. Ook compatibel met aangepaste zelfgehoste installaties. Er worden nooit videogegevens naar onze servers verzonden, alleen synchronisatiemetagegevens.", "FEATURE_5_TITLE": "Zelf te hosten & Docker-ready", "FEATURE_5_DESC": "Onze officiële servers zijn gratis en snel, maar u kunt de volledige controle nemen als u dat wilt. Start uw eigen privé-relayserver in seconden via Docker.", "FEATURE_6_TITLE": "Directe uitnodigingen / 1-klik deelname", "FEATURE_6_DESC": "Geen IP-adressen of wachtwoorden om uit te wisselen. Deel een gegenereerde uitnodigingslink met uw vrienden om ze met een enkele klik automatisch deel te laten nemen.", "FEATURE_7_TITLE": "Volume egaliseren / Audiocompressor", - "FEATURE_7_DESC": "Niet langer aan de volumeknop zitten. De ingebouwde audiocompressor versterkt stille dialogen en dempt harde explosies. Werkt op Netflix, Prime Video, Disney+, YouTube en elke HTML5-video. Volledig lokaal — geen audiogegevens verlaten uw computer.", + "FEATURE_7_DESC": "Niet langer aan de volumeknop zitten. De ingebouwde audiocompressor versterkt stille dialogen en dempt harde explosies. Werkt op Netflix, Prime Video, Disney+, YouTube en elke HTML5-video. Volledig lokaal, geen audiogegevens verlaten uw computer.", "FEATURE_8_TITLE": "Open Source (MIT License)", "FEATURE_8_DESC": "De volledige codebase is openbaar controleerbaar op GitHub. Geen zwarte dozen, geen propri?taire blobs - 100% transparantie van de relayserver tot de browserextensie.", "COMP_TITLE": "KoalaSync vs. Teleparty", @@ -123,21 +123,21 @@ "FAQ_TITLE": "Veelgestelde vragen", "FAQ_SUBTITLE": "Alles wat u moet weten over het samen bekijken van video's in perfecte synchronisatie.", "FAQ_Q1": "Kan ik Netflix, Emby of Jellyfin samen in sync kijken met vrienden?", - "FAQ_A1": "Ja! KoalaSync werkt op Netflix, YouTube, Twitch en elke website met een HTML5-videospeler — inclusief Emby, Jellyfin en zelfgehoste mediaservers. Installeer de extensie, maak een kamer, deel de uitnodigingslink en iedereen kijkt in perfecte sync.", + "FAQ_A1": "Ja! KoalaSync werkt op Netflix, YouTube, Twitch en elke website met een HTML5-videospeler, inclusief Emby, Jellyfin en zelfgehoste mediaservers. Installeer de extensie, maak een kamer, deel de uitnodigingslink en iedereen kijkt in perfecte sync.", "FAQ_Q_VIDEO_ACCESS": "Streamt KoalaSync de video naar mijn vrienden?", "FAQ_A_VIDEO_ACCESS": "Nee. KoalaSync streamt, host of deelt geen videocontent en omzeilt geen toegang tot video’s. Iedereen kijkt de video lokaal in de eigen browser en heeft zelf toegang nodig tot de website of streamingdienst, bijvoorbeeld een eigen Netflix-account. KoalaSync synchroniseert alleen afspeelacties zoals afspelen, pauzeren en spoelen.", "FAQ_Q2": "Is KoalaSync een gratis alternatief voor Teleparty?", - "FAQ_A2": "100% gratis en open-source onder de MIT-licentie. Geen premium-niveaus, geen vergrendelde functies, geen advertenties — alles is inbegrepen. In tegenstelling tot Teleparty is de relayserver van KoalaSync alleen in het RAM-geheugen met nul gegevensverzameling of gebruikersaccounts vereist.", + "FAQ_A2": "100% gratis en open-source onder de MIT-licentie. Geen premium-niveaus, geen vergrendelde functies, geen advertenties, alles is inbegrepen. In tegenstelling tot Teleparty is de relayserver van KoalaSync alleen in het RAM-geheugen met nul gegevensverzameling of gebruikersaccounts vereist.", "FAQ_Q3": "Werkt KoalaSync met Emby, Jellyfin en zelfgehoste mediaservers?", "FAQ_A3": "Ja. KoalaSync detecteert elk standaard HTML5-video-element, wat betekent dat het perfect werkt met Emby, Jellyfin, Plex en elke aangepaste zelfgehoste streaminginstallatie. U kunt de KoalaSync-relayserver ook zelf hosten via Docker voor volledige soevereiniteit over uw gegevens.", "FAQ_Q4": "Welke browsers en platforms ondersteunen KoalaSync?", - "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave en alle op Chromium gebaseerde browsers. Installeer het rechtstreeks vanuit de Chrome Web Store of Firefox Add-ons — geen handmatige configuratie nodig.", + "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave en alle op Chromium gebaseerde browsers. Installeer het rechtstreeks vanuit de Chrome Web Store of Firefox Add-ons, geen handmatige configuratie nodig.", "FAQ_Q5": "Moeten al mijn vrienden de extensie geïnstalleerd hebben?", - "FAQ_A5": "Ja, elke deelnemer moet KoalaSync geïnstalleerd hebben — maar er is geen aanmelding of accountcreatie. Klik gewoon op de uitnodigingslink, installeer de extensie als u dat nog niet hebt gedaan, en u neemt binnen enkele seconden automatisch deel aan de kamer.", + "FAQ_A5": "Ja, elke deelnemer moet KoalaSync geïnstalleerd hebben, maar er is geen aanmelding of accountcreatie. Klik gewoon op de uitnodigingslink, installeer de extensie als u dat nog niet hebt gedaan, en u neemt binnen enkele seconden automatisch deel aan de kamer.", "FAQ_Q6": "Zijn mijn gegevens veilig? Wat als ik de officiële server niet vertrouw?", - "FAQ_A6": "Volledig veilig. De relayserver van KoalaSync is alleen in het RAM-geheugen — alle sessiegegevens worden permanent verwijderd zodra u de kamer verlaat. Geen database, geen logboeken, geen analyses, geen accounts. En als u de voorkeur geeft aan volledige controle: u kunt uw eigen privé-relayserver binnen enkele minuten zelf hosten via Docker. De volledige codebase is open-source en auditeerbaar op GitHub.", + "FAQ_A6": "Volledig veilig. De relayserver van KoalaSync is alleen in het RAM-geheugen, alle sessiegegevens worden permanent verwijderd zodra u de kamer verlaat. Geen database, geen logboeken, geen analyses, geen accounts. En als u de voorkeur geeft aan volledige controle: u kunt uw eigen privé-relayserver binnen enkele minuten zelf hosten via Docker. De volledige codebase is open-source en auditeerbaar op GitHub.", "FAQ_Q7": "Kan ik stille dialogen en harde explosies oplossen bij het kijken van video's in de browser?", - "FAQ_A7": "Ja. KoalaSync 2.2.0 bevat een ingebouwde audiocompressor die het verschil tussen stille en luidruchtige delen van uw video verkleint. Het werkt lokaal via de Web Audio API — geen audiogegevens verlaten ooit uw computer. Open de popup, maak een kamer, ga naar Instellingen → Audio Processing, schakel de compressor in en kies een preset. Werkt op Netflix, Prime Video, Disney+, YouTube en elke HTML5-videosite.", + "FAQ_A7": "Ja. KoalaSync 2.2.0 bevat een ingebouwde audiocompressor die het verschil tussen stille en luidruchtige delen van uw video verkleint. Het werkt lokaal via de Web Audio API, geen audiogegevens verlaten ooit uw computer. Open de popup, maak een kamer, ga naar Instellingen → Audio Processing, schakel de compressor in en kies een preset. Werkt op Netflix, Prime Video, Disney+, YouTube en elke HTML5-videosite.", "HOWTO_TITLE": "Hoe video's te synchroniseren met vrienden via KoalaSync", "HOWTO_DESC": "Bekijk elke video in perfecte synchronisatie met vrienden op YouTube, Netflix, Twitch en meer. Geen aanmelding, geen tracking.", "HOWTO_STEP_1_NAME": "Installeer de browserextensie", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Hostbeheer", "MOCK_HOST_CONTROL_TOGGLE": "Alleen ik mag de weergave bedienen", "LABEL_SELECT_VIDEO": "Selecteer video", - "OPTION_SELECT_TAB": "-- Selecteer een tabblad --" + "OPTION_SELECT_TAB": "-- Selecteer een tabblad --", + "THEME_TOGGLE_LABEL": "Licht/donker thema wisselen", + "FAQ_SHOW_ALL": "Alle vragen tonen", + "FAQ_HIDE_ALL": "Vragen verbergen", + "SELF_SHOW_SETUP": "Installatiehandleiding tonen", + "SELF_HIDE_SETUP": "Handleiding verbergen", + "HERO_TRUST": "Gratis · Open source · Geen account nodig" } diff --git a/website/locales/pl.json b/website/locales/pl.json index f50984d..c5c6ab6 100644 --- a/website/locales/pl.json +++ b/website/locales/pl.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "pl_PL", - "META_TITLE": "KoalaSync | Synchronizuj Netflix, YouTube i dowolne wideo ze znajomymi", - "META_DESCRIPTION": "Oglądaj Netflix, YouTube, Twitch i dowolne wideo HTML5 w idealnej synchronizacji ze znajomymi. Darmowe rozszerzenie o otwartym kodzie dla Chrome i Firefox. Bez rejestracji.", - "SCHEMA_APP_DESC": "Oglądaj Netflix, YouTube, Twitch i dowolne wideo HTML5 w idealnej synchronizacji ze znajomymi. Darmowe rozszerzenie o otwartym kodzie dla Chrome i Firefox. Bez rejestracji.", + "META_TITLE": "KoalaSync | Watch party dla Netflix, YouTube i innych", + "META_DESCRIPTION": "Watch party na Netflix, YouTube, Twitch i dowolnym wideo HTML5. Darmowe, otwarte rozszerzenie do Chrome i Firefox. Bez konta, bez śledzenia, bez reklam.", + "SCHEMA_APP_DESC": "Watch party na Netflix, YouTube, Twitch i dowolnym wideo HTML5. Darmowe, otwarte rozszerzenie do Chrome i Firefox. Bez konta, bez śledzenia, bez reklam.", "OG_TITLE": "KoalaSync | Synchronizuj Netflix, Emby, Jellyfin i prawie każde wideo ze znajomymi", "OG_DESCRIPTION": "Oglądaj Netflix, Emby, Jellyfin, YouTube, Twitch i prawie każde wideo HTML5 w idealnej synchronizacji. Zorientowane na prywatność rozszerzenie o otwartym kodzie dla Chrome i Firefox.", "TWITTER_TITLE": "KoalaSync | Synchronizuj Netflix, Emby, Jellyfin i prawie każde wideo ze znajomymi – Rozszerzenie przeglądarki", "TWITTER_DESCRIPTION": "Oglądaj Netflix, Emby, Jellyfin, YouTube, Twitch i prawie każde wideo HTML5 w idealnej synchronizacji ze znajomymi. Zorientowane na prywatność rozszerzenie o otwartym kodzie dla Chrome i Firefox.", "NAV_FEATURES": "Funkcje", "NAV_HOW_IT_WORKS": "Jak to działa", - "HERO_TITLE": "Oglądajcie Razem.Synchronizujcie Idealnie.", - "HERO_SUBTITLE": "Twój zdalny wieczór filmowy bez opóźnień. Bez rejestracji, bez zbierania danych. Po prostu udostępnij link i oglądajcie razem.", + "HERO_TITLE": "Zamień dowolne wideo w watch party.", + "HERO_SUBTITLE": "Twój zdalny wieczór filmowy bez opóźnień. Bez konta, bez śledzenia, bez reklam. Udostępnij link i naciśnijcie play razem.", "HERO_MASCOT_ALT": "Uroczy koala stojący i patrzący w dół na przyciski pobierania", "DEMO_SYNC": "Zsynchronizowane", - "DEMO_HINT": "Demo na żywo — naciśnij play w dowolnej karcie: KoalaSync utrzyma obie w synchronizacji.", + "DEMO_HINT": "Demo na żywo: naciśnij play w dowolnej karcie, a KoalaSync utrzyma obie w synchronizacji.", "DEMO_NO_ROOM": "Jeszcze nie połączono", "DEMO_CREATE_ROOM": "Utwórz pokój", "DEMO_JOINED": "Dołączono do pokoju", @@ -49,15 +49,15 @@ "FEATURE_3_TITLE": "Zero kont / Czysta prywatność", "FEATURE_3_DESC": "Bez rejestracji, bez śledzenia, bez trwałych śladów. Serwer działa w całości w pamięci RAM i czyści Twój pokój, gdy go opuszczasz.", "FEATURE_4_TITLE": "Uniwersalne wsparcie HTML5", - "FEATURE_4_DESC": "Działa na YouTube, Twitch, Netflix, Jellyfin, Emby i prawie każdej standardowej stronie z elementem wideo HTML5. Kompatybilny również z własnymi serwerami. Żadne dane wideo nigdy nie są wysyłane na nasze serwery — jedynie metadane synchronizacji.", + "FEATURE_4_DESC": "Działa na YouTube, Twitch, Netflix, Jellyfin, Emby i prawie każdej standardowej stronie z elementem wideo HTML5. Kompatybilny również z własnymi serwerami. Żadne dane wideo nigdy nie są wysyłane na nasze serwery, jedynie metadane synchronizacji.", "FEATURE_5_TITLE": "Możliwość własnego hostowania i wsparcie Docker", "FEATURE_5_DESC": "Nasze oficjalne serwery są darmowe i szybkie, ale możesz przejąć pełną kontrolę, jeśli chcesz. Uruchom własny serwer w kilka sekund za pomocą Dockera.", "FEATURE_6_TITLE": "Natychmiastowe zaproszenia / Dołączanie 1 kliknięciem", "FEATURE_6_DESC": "Bez wymiany adresów IP czy haseł. Udostępnij wygenerowany link zaproszenia znajomym, aby mogli automatycznie dołączyć do pokoju jednym kliknięciem.", "FEATURE_7_TITLE": "Wyrównywanie głośności / Kompresor audio", - "FEATURE_7_DESC": "Koniec z ciągłym regulowaniem głośności. Wbudowany kompresor audio wzmacnia ciche dialogi i łagodzi głośne eksplozje. Działa na Netflix, Prime Video, Disney+, YouTube i każdym filmie HTML5. W pełni lokalny — żadne dane audio nie opuszczają twojego komputera.", + "FEATURE_7_DESC": "Koniec z ciągłym regulowaniem głośności. Wbudowany kompresor audio wzmacnia ciche dialogi i łagodzi głośne eksplozje. Działa na Netflix, Prime Video, Disney+, YouTube i każdym filmie HTML5. W pełni lokalny, żadne dane audio nie opuszczają twojego komputera.", "FEATURE_8_TITLE": "Open Source (Licencja MIT)", - "FEATURE_8_DESC": "Cały kod źródłowy jest publicznie dostępny i możliwy do zweryfikowania na GitHubie. Żadnych czarnych skrzynek, żadnych własnościowych obiektów blob — 100% przejrzystości od serwera przekaźnikowego (relay server) po rozszerzenie przeglądarki.", + "FEATURE_8_DESC": "Cały kod źródłowy jest publicznie dostępny i możliwy do zweryfikowania na GitHubie. Żadnych czarnych skrzynek, żadnych własnościowych obiektów blob. 100% przejrzystości od serwera przekaźnikowego (relay server) po rozszerzenie przeglądarki.", "COMP_TITLE": "KoalaSync vs. Teleparty", "COMP_SUBTITLE": "Zobacz, dlaczego otwarty kod, brak reklam i ochrona prywatności to lepszy sposób na wspólne oglądanie.", "COMP_COL_FEATURE": "Funkcja", @@ -123,21 +123,21 @@ "FAQ_TITLE": "Często zadawane pytania", "FAQ_SUBTITLE": "Wszystko, co musisz wiedzieć o wspólnym oglądaniu filmów w idealnej synchronizacji.", "FAQ_Q1": "Czy mogę oglądać Netflix, Emby lub Jellyfin w synchronizacji ze znajomymi?", - "FAQ_A1": "Tak! KoalaSync działa na Netflix, YouTube, Twitch i każdej stronie z odtwarzaczem wideo HTML5 — w tym Emby, Jellyfin i własnych serwerach mediów. Zainstaluj rozszerzenie, utwórz pokój, udostępnij link i wszyscy oglądają w idealnej synchronizacji.", + "FAQ_A1": "Tak! KoalaSync działa na Netflix, YouTube, Twitch i każdej stronie z odtwarzaczem wideo HTML5, w tym Emby, Jellyfin i własnych serwerach mediów. Zainstaluj rozszerzenie, utwórz pokój, udostępnij link i wszyscy oglądają w idealnej synchronizacji.", "FAQ_Q_VIDEO_ACCESS": "Czy KoalaSync przesyła wideo do moich znajomych?", "FAQ_A_VIDEO_ACCESS": "Nie. KoalaSync nie przesyła, nie hostuje, nie udostępnia ani nie omija dostępu do treści wideo. Każda osoba ogląda wideo lokalnie we własnej przeglądarce i potrzebuje własnego dostępu do danej strony lub usługi streamingowej, na przykład własnego konta Netflix. KoalaSync synchronizuje tylko akcje odtwarzania, takie jak odtwarzanie, pauza i przewijanie.", "FAQ_Q2": "Czy KoalaSync to darmowa alternatywa dla Teleparty?", - "FAQ_A2": "W 100% darmowy i o otwartym kodzie na licencji MIT. Brak planów premium, brak zablokowanych funkcji, brak reklam — wszystko jest w cenie. W przeciwieństwie do Teleparty, serwer KoalaSync działa tylko w pamięci RAM, bez zbierania danych i bez kont użytkowników.", + "FAQ_A2": "W 100% darmowy i o otwartym kodzie na licencji MIT. Brak planów premium, brak zablokowanych funkcji, brak reklam, wszystko jest w cenie. W przeciwieństwie do Teleparty, serwer KoalaSync działa tylko w pamięci RAM, bez zbierania danych i bez kont użytkowników.", "FAQ_Q3": "Czy KoalaSync działa z Emby, Jellyfin i własnymi serwerami mediów?", "FAQ_A3": "Tak. KoalaSync wykrywa każdy standardowy element wideo HTML5, co oznacza, że działa idealnie z Emby, Jellyfin, Plexem i dowolnymi własnymi rozwiązaniami streamingowymi. Możesz również samodzielnie hostować serwer przez Dockera.", "FAQ_Q4": "Które przeglądarki i platformy obsługują KoalaSync?", - "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave i wszystkie przeglądarki oparte na Chromium. Zainstaluj je bezpośrednio z Chrome Web Store lub Firefox Add-ons — nie jest wymagana ręczna konfiguracja.", + "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave i wszystkie przeglądarki oparte na Chromium. Zainstaluj je bezpośrednio z Chrome Web Store lub Firefox Add-ons, nie jest wymagana ręczna konfiguracja.", "FAQ_Q5": "Czy wszyscy moi znajomi muszą mieć zainstalowane rozszerzenie?", - "FAQ_A5": "Tak, każdy uczestnik musi mieć zainstalowane KoalaSync — ale nie ma rejestracji ani tworzenia kont. Po prostu kliknij link zaproszenia, zainstaluj rozszerzenie, jeśli jeszcze tego nie zrobiłeś, a dołączysz do pokoju automatycznie w kilka sekund.", + "FAQ_A5": "Tak, każdy uczestnik musi mieć zainstalowane KoalaSync, ale nie ma rejestracji ani tworzenia kont. Po prostu kliknij link zaproszenia, zainstaluj rozszerzenie, jeśli jeszcze tego nie zrobiłeś, a dołączysz do pokoju automatycznie w kilka sekund.", "FAQ_Q6": "Czy moje dane są bezpieczne? Co jeśli nie ufam oficjalnemu serwerowi?", - "FAQ_A6": "Całkowicie bezpieczne. Serwer KoalaSync działa tylko w pamięci RAM — wszystkie dane sesji są trwale usuwane w momencie opuszczenia pokoju. Brak bazy danych, brak logowania, brak analityki, brak kont. A jeśli wolisz pełną kontrolę: możesz samodzielmente uruchomić własny serwer przez Dockera w kilka minut. Cały kod źródłowy jest otwarty i dostępny na GitHubie.", + "FAQ_A6": "Całkowicie bezpieczne. Serwer KoalaSync działa tylko w pamięci RAM, wszystkie dane sesji są trwale usuwane w momencie opuszczenia pokoju. Brak bazy danych, brak logowania, brak analityki, brak kont. A jeśli wolisz pełną kontrolę: możesz samodzielmente uruchomić własny serwer przez Dockera w kilka minut. Cały kod źródłowy jest otwarty i dostępny na GitHubie.", "FAQ_Q7": "Czy mogę naprawić ciche dialogi i głośne eksplozje podczas oglądania filmów w przeglądarce?", - "FAQ_A7": "Tak. KoalaSync 2.2.0 zawiera wbudowany kompresor audio, który zmniejsza różnicę między cichymi a głośnymi częściami filmu. Działa lokalnie przez Web Audio API — żadne dane audio nie opuszczają twojego komputera. Otwórz popup, utwórz pokój, przejdź do Ustawienia → Audio Processing, włącz kompresor i wybierz preset. Działa na Netflix, Prime Video, Disney+, YouTube i każdej stronie z wideo HTML5.", + "FAQ_A7": "Tak. KoalaSync 2.2.0 zawiera wbudowany kompresor audio, który zmniejsza różnicę między cichymi a głośnymi częściami filmu. Działa lokalnie przez Web Audio API, żadne dane audio nie opuszczają twojego komputera. Otwórz popup, utwórz pokój, przejdź do Ustawienia → Audio Processing, włącz kompresor i wybierz preset. Działa na Netflix, Prime Video, Disney+, YouTube i każdej stronie z wideo HTML5.", "HOWTO_TITLE": "Jak synchronizować wideo ze znajomymi za pomocą KoalaSync", "HOWTO_DESC": "Oglądaj dowolne wideo w idealnej synchronizacji ze znajomymi na YouTube, Netflix, Twitch i innych. Bez rejestracji, bez śledzenia.", "HOWTO_STEP_1_NAME": "Zainstaluj rozszerzenie przeglądarki", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Kontrola hosta", "MOCK_HOST_CONTROL_TOGGLE": "Tylko ja mogę sterować odtwarzaniem", "LABEL_SELECT_VIDEO": "Wybierz wideo", - "OPTION_SELECT_TAB": "-- Wybierz kartę --" + "OPTION_SELECT_TAB": "-- Wybierz kartę --", + "THEME_TOGGLE_LABEL": "Przełącz tryb jasny/ciemny", + "FAQ_SHOW_ALL": "Pokaż wszystkie pytania", + "FAQ_HIDE_ALL": "Ukryj pytania", + "SELF_SHOW_SETUP": "Pokaż instrukcję instalacji", + "SELF_HIDE_SETUP": "Ukryj instrukcję", + "HERO_TRUST": "Za darmo · Open source · Bez konta" } diff --git a/website/locales/pt-BR.json b/website/locales/pt-BR.json index 5f7dcff..0c98e7b 100644 --- a/website/locales/pt-BR.json +++ b/website/locales/pt-BR.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "pt_BR", - "META_TITLE": "KoalaSync | Sincronize Netflix, YouTube e qualquer vídeo com amigos", - "META_DESCRIPTION": "Assista Netflix, YouTube, Twitch e qualquer vídeo HTML5 em perfeita sincronia. Extensão de navegador gratuita e open source. Sem cadastro.", - "SCHEMA_APP_DESC": "Assista Netflix, YouTube, Twitch e qualquer vídeo HTML5 em perfeita sincronia. Extensão de navegador gratuita e open source. Sem cadastro.", + "META_TITLE": "KoalaSync | Watch party para Netflix, YouTube e mais", + "META_DESCRIPTION": "Watch party na Netflix, YouTube, Twitch e qualquer vídeo HTML5. Extensão gratuita e open source para Chrome e Firefox. Sem conta, sem rastreamento, sem anúncios.", + "SCHEMA_APP_DESC": "Watch party na Netflix, YouTube, Twitch e qualquer vídeo HTML5. Extensão gratuita e open source para Chrome e Firefox. Sem conta, sem rastreamento, sem anúncios.", "OG_TITLE": "KoalaSync | Sincronize Netflix, Emby, Jellyfin e vídeos com amigos", "OG_DESCRIPTION": "Assista a vídeos em perfeita sincronia com seus amigos. Extensão open source e focada em privacidade.", "TWITTER_TITLE": "KoalaSync | Sincronize vídeos online com seus amigos", "TWITTER_DESCRIPTION": "Assista a vídeos junto com seus amigos em sincronia perfeita. Open source e seguro.", "NAV_FEATURES": "Recursos", "NAV_HOW_IT_WORKS": "Como Funciona", - "HERO_TITLE": "Assistam Juntos.Sincronia Perfeita.", - "HERO_SUBTITLE": "Sua noite de cinema à distância sem atrasos. Sem contas, sem coleta de dados. Apenas compartilhe o link e assistam juntos.", + "HERO_TITLE": "Transforme qualquer vídeo em uma watch party.", + "HERO_SUBTITLE": "Sua sessão de cinema à distância, sem atrasos. Sem conta, sem rastreamento, sem anúncios. Compartilhe um link e deem play juntos.", "HERO_MASCOT_ALT": "Um coala fofo olhando para os botões de download", "DEMO_SYNC": "Sincronizado", - "DEMO_HINT": "Demo ao vivo — dê play em qualquer aba: o KoalaSync mantém as duas em sincronia.", + "DEMO_HINT": "Demo ao vivo: dê play em qualquer aba e o KoalaSync mantém as duas em sincronia.", "DEMO_NO_ROOM": "Ainda não conectado", "DEMO_CREATE_ROOM": "Criar sala", "DEMO_JOINED": "Entrou na sala", @@ -198,7 +198,7 @@ "ALT_TELEPARTY_LIMITS_TITLE": "Limitações reais", "ALT_TELEPARTY_LIMITS_BODY": "O KoalaSync não faz mágica e não tenta esconder suas limitações. Atualmente, ele funciona apenas em navegadores para desktop. Não possui chat integrado nem aplicativo para dispositivos móveis.

A compatibilidade também depende do navegador e do reprodutor de vídeo utilizado. O KoalaSync deve funcionar com praticamente qualquer reprodutor de vídeo padrão de navegador, mas os sites podem alterar seus reprodutores, o comportamento de DRM ou as restrições do navegador a qualquer momento.

O KoalaSync não tem vínculo com Netflix, Disney+, Prime Video, YouTube, Teleparty, Emby, Jellyfin, Plex ou qualquer outra marca mencionada aqui. Os nomes são utilizados apenas para ilustrar casos de uso comuns.", "ALT_TELEPARTY_SUMMARY_TITLE": "Resumo", - "ALT_TELEPARTY_SUMMARY_BODY": "Se você busca chat integrado ou suporte para dispositivos móveis, o Teleparty pode ser a melhor opção. Se você prefere uma solução gratuita e de código aberto para sincronização em navegadores de desktop — que funcione com praticamente qualquer reprodutor de vídeo comum, incluindo servidores de mídia auto-hospedados como Emby, Jellyfin e Plex —, o KoalaSync é provavelmente a escolha ideal.", + "ALT_TELEPARTY_SUMMARY_BODY": "Se você busca chat integrado ou suporte para dispositivos móveis, o Teleparty pode ser a melhor opção. Se você prefere uma solução gratuita e de código aberto para sincronização em navegadores de desktop, que funcione com praticamente qualquer reprodutor de vídeo comum, incluindo servidores de mídia auto-hospedados como Emby, Jellyfin e Plex, o KoalaSync é provavelmente a escolha ideal.", "ALT_SCREEN_TITLE": "KoalaSync vs. compartilhamento de tela: quando a sincronização de vídeo é melhor?", "ALT_SCREEN_META_DESC": "Uma comparação prática entre o KoalaSync e o compartilhamento de tela para sessões de cinema remotas, abordando controle de reprodução, qualidade de vídeo, privacidade, legendas e visualização via navegador.", "ALT_SCREEN_INTRO": "O compartilhamento de tela funciona e, honestamente, às vezes é o suficiente. Uma pessoa compartilha a tela, as outras assistem e pronto.

Mas, para sessões de cinema mais longas ou para assistir a episódios em conjunto, isso pode se tornar incômodo. A qualidade do vídeo depende da velocidade de upload, da CPU e do navegador de quem está compartilhando, além da compressão aplicada por aplicativos como Discord, Teamspeak, Zoom ou outros. Além disso, apenas uma pessoa realmente controla a reprodução.", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Controle do anfitrião", "MOCK_HOST_CONTROL_TOGGLE": "Apenas eu posso controlar a reprodução", "LABEL_SELECT_VIDEO": "Selecionar vídeo", - "OPTION_SELECT_TAB": "-- Selecione uma aba --" + "OPTION_SELECT_TAB": "-- Selecione uma aba --", + "THEME_TOGGLE_LABEL": "Alternar modo claro/escuro", + "FAQ_SHOW_ALL": "Mostrar todas as perguntas", + "FAQ_HIDE_ALL": "Ocultar perguntas", + "SELF_SHOW_SETUP": "Mostrar guia de configuração", + "SELF_HIDE_SETUP": "Ocultar guia", + "HERO_TRUST": "Grátis · Código aberto · Sem conta" } diff --git a/website/locales/pt.json b/website/locales/pt.json index 98166bd..33a75c4 100644 --- a/website/locales/pt.json +++ b/website/locales/pt.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "pt_PT", - "META_TITLE": "KoalaSync | Sincronize Netflix, YouTube e vídeos com os amigos", - "META_DESCRIPTION": "Veja Netflix, YouTube, Twitch e qualquer vídeo HTML5 em sincronia perfeita. Extensão gratuita e de código aberto. Sem registo.", - "SCHEMA_APP_DESC": "Veja Netflix, YouTube, Twitch e qualquer vídeo HTML5 em sincronia perfeita. Extensão gratuita e de código aberto. Sem registo.", + "META_TITLE": "KoalaSync | Watch party para Netflix, YouTube e mais", + "META_DESCRIPTION": "Watch party na Netflix, YouTube, Twitch e qualquer vídeo HTML5. Extensão gratuita e open source para Chrome e Firefox. Sem conta, sem rastreio, sem anúncios.", + "SCHEMA_APP_DESC": "Watch party na Netflix, YouTube, Twitch e qualquer vídeo HTML5. Extensão gratuita e open source para Chrome e Firefox. Sem conta, sem rastreio, sem anúncios.", "OG_TITLE": "KoalaSync | Sincronize Netflix, Emby, Jellyfin e vídeos com os amigos", "OG_DESCRIPTION": "Veja vídeos em sincronia perfeita com os amigos. Extensão de código aberto e focada na privacidade.", "TWITTER_TITLE": "KoalaSync | Sincronize vídeos em streaming com os amigos", "TWITTER_DESCRIPTION": "Veja vídeos com os amigos em sincronia perfeita. Extensão de código aberto focada na privacidade.", "NAV_FEATURES": "Funcionalidades", "NAV_HOW_IT_WORKS": "Como Funciona", - "HERO_TITLE": "Vejam Juntos.Sincronia Perfeita.", - "HERO_SUBTITLE": "A sua noite de cinema à distância e sem atrasos. Sem contas, sem recolha de dados. Partilhe um link e vejam juntos.", + "HERO_TITLE": "Transforma qualquer vídeo numa watch party.", + "HERO_SUBTITLE": "A tua noite de cinema à distância, sem atrasos. Sem conta, sem rastreio, sem anúncios. Partilha um link e carreguem no play juntos.", "HERO_MASCOT_ALT": "Um coala fofo a olhar para os botões de download", "DEMO_SYNC": "Sincronizado", - "DEMO_HINT": "Demo ao vivo — dê play em qualquer aba: o KoalaSync mantém as duas em sincronia.", + "DEMO_HINT": "Demo ao vivo: dê play em qualquer aba e o KoalaSync mantém as duas em sincronia.", "DEMO_NO_ROOM": "Ainda não conectado", "DEMO_CREATE_ROOM": "Criar sala", "DEMO_JOINED": "Entrou na sala", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Controlo do anfitrião", "MOCK_HOST_CONTROL_TOGGLE": "Apenas eu posso controlar a reprodução", "LABEL_SELECT_VIDEO": "Selecionar Vídeo", - "OPTION_SELECT_TAB": "-- Selecionar um Separador --" + "OPTION_SELECT_TAB": "-- Selecionar um Separador --", + "THEME_TOGGLE_LABEL": "Alternar modo claro/escuro", + "FAQ_SHOW_ALL": "Mostrar todas as perguntas", + "FAQ_HIDE_ALL": "Ocultar perguntas", + "SELF_SHOW_SETUP": "Mostrar guia de configuração", + "SELF_HIDE_SETUP": "Ocultar guia", + "HERO_TRUST": "Grátis · Open source · Sem conta" } diff --git a/website/locales/ru.json b/website/locales/ru.json index bec7686..fb37d7c 100644 --- a/website/locales/ru.json +++ b/website/locales/ru.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "ru_RU", - "META_TITLE": "KoalaSync | Синхронизация Netflix, YouTube и любого видео с друзьями", - "META_DESCRIPTION": "Смотрите Netflix, YouTube, Twitch и любые HTML5-видео в синхронизации с друзьями. Бесплатное расширение браузера с открытым кодом. Регистрация не требуется.", - "SCHEMA_APP_DESC": "Смотрите Netflix, YouTube, Twitch и любые HTML5-видео в синхронизации с друзьями. Бесплатное расширение браузера с открытым кодом. Регистрация не требуется.", + "META_TITLE": "KoalaSync | Watch party для Netflix, YouTube и любых видео", + "META_DESCRIPTION": "Watch party в Netflix, YouTube, Twitch и любом HTML5-видео. Бесплатное расширение с открытым кодом для Chrome и Firefox. Без аккаунта, слежки и рекламы.", + "SCHEMA_APP_DESC": "Watch party в Netflix, YouTube, Twitch и любом HTML5-видео. Бесплатное расширение с открытым кодом для Chrome и Firefox. Без аккаунта, слежки и рекламы.", "OG_TITLE": "KoalaSync | Синхронизация Netflix, Emby, Jellyfin и почти любого видео с друзьями", "OG_DESCRIPTION": "Смотрите Netflix, Emby, Jellyfin, YouTube, Twitch и почти любое HTML5-видео в идеальной синхронизации. Открытое и ориентированное на конфиденциальность расширение для Chrome и Firefox.", "TWITTER_TITLE": "KoalaSync | Синхронизация Netflix, Emby, Jellyfin и почти любого видео с друзьями – Расширение", "TWITTER_DESCRIPTION": "Смотрите Netflix, Emby, Jellyfin, YouTube, Twitch и почти любое HTML5-видео в идеальной синхронизации с друзьями. Открытое и конфиденциальное расширение для Chrome и Firefox.", "NAV_FEATURES": "Функции", "NAV_HOW_IT_WORKS": "Как это работает", - "HERO_TITLE": "Смотрите вместе.Синхронно на 100%.", - "HERO_SUBTITLE": "Ваш киновечер на расстоянии без задержек. Без регистрации и сбора данных. Просто поделитесь ссылкой и смотрите вместе.", + "HERO_TITLE": "Преврати любое видео в watch party.", + "HERO_SUBTITLE": "Ваш киновечер на расстоянии, без задержек. Без аккаунта, без слежки, без рекламы. Просто поделитесь ссылкой и нажмите play вместе.", "HERO_MASCOT_ALT": "Милый коала стоит и смотрит вниз на кнопки загрузки", "DEMO_SYNC": "Синхронно", - "DEMO_HINT": "Живое демо — нажмите play в любой вкладке: KoalaSync синхронизирует обе.", + "DEMO_HINT": "Живое демо: нажмите play в любой вкладке, и KoalaSync синхронизирует обе.", "DEMO_NO_ROOM": "Ещё не подключено", "DEMO_CREATE_ROOM": "Создать комнату", "DEMO_JOINED": "В комнате", @@ -133,9 +133,9 @@ "FAQ_Q4": "Какие браузеры и платформы поддерживают KoalaSync?", "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave и все браузеры на базе Chromium. Установите из Chrome Web Store или Firefox Add-ons.", "FAQ_Q5": "Всем ли моим друзьям нужно устанавливать расширение?", - "FAQ_A5": "Да, каждому участнику нужен KoalaSync — но без регистрации и создания учётной записи. Просто перейдите по ссылке-приглашению, установите расширение (если ещё нет) и вы автоматически в комнате.", + "FAQ_A5": "Да, каждому участнику нужен KoalaSync, но без регистрации и создания учётной записи. Просто перейдите по ссылке-приглашению, установите расширение (если ещё нет) и вы автоматически в комнате.", "FAQ_Q6": "Мои данные в безопасности? Что, если я не доверяю официальному серверу?", - "FAQ_A6": "Полностью безопасно. Relay-сервер KoalaSync работает только в ОЗУ — все данные сессии удаляются при выходе из комнаты. Никаких баз данных, логов, аналитики и учётных записей. Если хотите полный контроль: разверните свой приватный relay-сервер через Docker за пару минут. Исходный код полностью открыт и доступен для аудита на GitHub.", + "FAQ_A6": "Полностью безопасно. Relay-сервер KoalaSync работает только в ОЗУ, все данные сессии удаляются при выходе из комнаты. Никаких баз данных, логов, аналитики и учётных записей. Если хотите полный контроль: разверните свой приватный relay-сервер через Docker за пару минут. Исходный код полностью открыт и доступен для аудита на GitHub.", "FAQ_Q7": "Можно ли исправить тихие диалоги и громкие взрывы при просмотре видео в браузере?", "FAQ_A7": "Да. KoalaSync 2.2.0 включает встроенный аудио компрессор, который уменьшает разницу между тихими и громкими частями видео. Он работает локально через Web Audio API — аудиоданные никогда не покидают ваш компьютер. Откройте попап, создайте комнату, перейдите в Настройки → Audio Processing, включите компрессор и выберите пресет. Работает на Netflix, Prime Video, Disney+, YouTube и любом сайте с HTML5-видео.", "HOWTO_TITLE": "Как синхронизировать видео с друзьями с помощью KoalaSync", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Управление ведущим", "MOCK_HOST_CONTROL_TOGGLE": "Только я могу управлять воспроизведением", "LABEL_SELECT_VIDEO": "Выбрать видео", - "OPTION_SELECT_TAB": "-- Выберите вкладку --" + "OPTION_SELECT_TAB": "-- Выберите вкладку --", + "THEME_TOGGLE_LABEL": "Переключить светлую/тёмную тему", + "FAQ_SHOW_ALL": "Показать все вопросы", + "FAQ_HIDE_ALL": "Скрыть вопросы", + "SELF_SHOW_SETUP": "Показать инструкцию по установке", + "SELF_HIDE_SETUP": "Скрыть инструкцию", + "HERO_TRUST": "Бесплатно · Открытый код · Без аккаунта" } diff --git a/website/locales/tr.json b/website/locales/tr.json index c41a878..2a3b6ea 100644 --- a/website/locales/tr.json +++ b/website/locales/tr.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "tr_TR", - "META_TITLE": "KoalaSync | Netflix, YouTube ve Herhangi Bir Videoyu Arkadaşlarınızla Eşitleyin", - "META_DESCRIPTION": "Netflix, YouTube, Twitch ve herhangi bir HTML5 videoyu arkadaşlarınızla mükemmel uyum içinde izleyin. Chrome ve Firefox için ücretsiz, açık kaynaklı tarayıcı eklentisi. Kayıt gerekmez.", - "SCHEMA_APP_DESC": "Netflix, YouTube, Twitch ve herhangi bir HTML5 videoyu arkadaşlarınızla mükemmel uyum içinde izleyin. Chrome ve Firefox için ücretsiz, açık kaynaklı tarayıcı eklentisi. Kayıt gerekmez.", + "META_TITLE": "KoalaSync | Netflix, YouTube ve Her Video için Watch Party", + "META_DESCRIPTION": "Netflix, YouTube, Twitch ve her HTML5 videoda watch party. Chrome ve Firefox için ücretsiz, açık kaynak uzantı. Hesap yok, takip yok, reklam yok.", + "SCHEMA_APP_DESC": "Netflix, YouTube, Twitch ve her HTML5 videoda watch party. Chrome ve Firefox için ücretsiz, açık kaynak uzantı. Hesap yok, takip yok, reklam yok.", "OG_TITLE": "KoalaSync | Netflix, Emby, Jellyfin ve Neredeyse Her Videoyu Arkadaşlarınızla Eşitleyin", "OG_DESCRIPTION": "Netflix, Emby, Jellyfin, YouTube, Twitch ve neredeyse tüm HTML5 videolarını mükemmel bir senkronizasyonla izleyin. Chrome ve Firefox için gizlilik öncelikli, açık kaynaklı tarayıcı eklentisi.", "TWITTER_TITLE": "KoalaSync | Netflix, Emby, Jellyfin ve Neredeyse Her Videoyu Arkadaşlarla Eşitle – Tarayıcı Eklentisi", "TWITTER_DESCRIPTION": "Netflix, Emby, Jellyfin, YouTube, Twitch ve neredeyse tüm HTML5 videolarını arkadaşlarınızla mükemmel bir senkronizasyonla izleyin. Chrome ve Firefox için gizlilik öncelikli, açık kaynaklı tarayıcı eklentisi.", "NAV_FEATURES": "Özellikler", "NAV_HOW_IT_WORKS": "Nasıl Çalışır", - "HERO_TITLE": "Birlikte İzleyin.Mükemmel Eşitleyin.", - "HERO_SUBTITLE": "Gecikmesiz uzaktan film geceniz. Kayıt yok, veri toplama yok. Sadece bir bağlantı paylaşın ve birlikte izleyin.", + "HERO_TITLE": "Herhangi bir videoyu watch party'ye dönüştür.", + "HERO_SUBTITLE": "Gecikmesiz uzaktan film gecen. Hesap yok, takip yok, reklam yok. Sadece bir bağlantı paylaş ve birlikte oynatın.", "HERO_MASCOT_ALT": "İndirme düğmelerine bakan sevimli bir koala", "DEMO_SYNC": "Senkronize", - "DEMO_HINT": "Canlı demo — sekmelerden birinde oynat'a basın: KoalaSync ikisini de senkronize tutar.", + "DEMO_HINT": "Canlı demo: sekmelerden birinde oynat'a basın, KoalaSync ikisini de senkronize tutar.", "DEMO_NO_ROOM": "Henüz bağlı değil", "DEMO_CREATE_ROOM": "Oda oluştur", "DEMO_JOINED": "Odaya katıldı", @@ -49,15 +49,15 @@ "FEATURE_3_TITLE": "Sıfır Hesap / Saf Gizlilik", "FEATURE_3_DESC": "Kayıt yok, takip yok, kalıcı iz yok. Sunucu tamamen geçici RAM üzerinde çalışır ve ayrıldığınızda odanızı temizler.", "FEATURE_4_TITLE": "Evrensel HTML5 Desteği", - "FEATURE_4_DESC": "YouTube, Twitch, Netflix, Jellyfin, Emby ve HTML5 video öğesi içeren neredeyse tüm standart web sayfalarında çalışır. Ayrıca özel barındırılan kurulumlarla da uyumludur. Sunucularımıza hiçbir video verisi asla gönderilmez — yalnızca senkronizasyon meta verileri gönderilir.", + "FEATURE_4_DESC": "YouTube, Twitch, Netflix, Jellyfin, Emby ve HTML5 video öğesi içeren neredeyse tüm standart web sayfalarında çalışır. Ayrıca özel barındırılan kurulumlarla da uyumludur. Sunucularımıza hiçbir video verisi asla gönderilmez, yalnızca senkronizasyon meta verileri gönderilir.", "FEATURE_5_TITLE": "Kendi Kendine Barındırılabilir ve Docker Uyumlu", "FEATURE_5_DESC": "Resmi sunucularımız ücretsiz ve hızlıdır, ancak isterseniz tüm kontrolü elinize alabilirsiniz. Docker aracılığıyla saniyeler içinde kendi özel aktarım sunucunuzu başlatın.", "FEATURE_6_TITLE": "Anında Davetler / Tek Tıkla Katılım", "FEATURE_6_DESC": "Takas edilecek IP adresi veya şifre yok. Arkadaşlarınızın tek bir tıklamayla odanıza otomatik olarak katılması için oluşturulan bir davet bağlantısını paylaşın.", "FEATURE_7_TITLE": "Ses Seviyesi Dengeleme / Ses Sıkıştırıcı", - "FEATURE_7_DESC": "Ses düğmesiyle sürekli oynamak yok. Dahili ses sıkıştırıcı, sessiz diyalogları güçlendirir ve yüksek patlamaları yumuşatır. Netflix, Prime Video, Disney+, YouTube ve herhangi bir HTML5 videosunda çalışır. Tamamen yerel — hiçbir ses verisi bilgisayarınızı terk etmez.", + "FEATURE_7_DESC": "Ses düğmesiyle sürekli oynamak yok. Dahili ses sıkıştırıcı, sessiz diyalogları güçlendirir ve yüksek patlamaları yumuşatır. Netflix, Prime Video, Disney+, YouTube ve herhangi bir HTML5 videosunda çalışır. Tamamen yerel, hiçbir ses verisi bilgisayarınızı terk etmez.", "FEATURE_8_TITLE": "Açık Kaynak (MIT Lisansı)", - "FEATURE_8_DESC": "Tüm kod tabanı GitHub'da herkese açık olarak incelenebilir. Kapalı kutular yok, tescilli blob'lar yok — aktarma sunucusundan (relay server) tarayıcı eklentisine kadar %100 şeffaflık.", + "FEATURE_8_DESC": "Tüm kod tabanı GitHub'da herkese açık olarak incelenebilir. Kapalı kutular yok, tescilli blob'lar yok, aktarma sunucusundan (relay server) tarayıcı eklentisine kadar %100 şeffaflık.", "COMP_TITLE": "KoalaSync vs. Teleparty", "COMP_SUBTITLE": "Açık kaynaklı, reklamsız ve önce gizlilik diyen yöntemin neden birlikte izlemenin en iyi yolu olduğunu görün.", "COMP_COL_FEATURE": "Özellik", @@ -127,17 +127,17 @@ "FAQ_Q_VIDEO_ACCESS": "KoalaSync videoyu arkadaşlarıma aktarır mı?", "FAQ_A_VIDEO_ACCESS": "Hayır. KoalaSync video içeriğini yayınlamaz, barındırmaz, paylaşmaz veya erişim kısıtlamalarını aşmaz. Herkes videoyu kendi tarayıcısında yerel olarak izler ve ilgili web sitesine ya da yayın hizmetine kendi erişimine, örneğin kendi Netflix hesabına, ihtiyaç duyar. KoalaSync yalnızca oynat, duraklat ve ileri geri sarma gibi oynatma eylemlerini senkronize eder.", "FAQ_Q2": "KoalaSync, Teleparty'ye ücretsiz bir alternatif mi?", - "FAQ_A2": "MIT Lisansı kapsamında %100 ücretsiz ve açık kaynaklıdır. Premium katmanlar yok, kilitli özellikler yok, reklam yok — her şey dahil. Teleparty'nin aksine, KoalaSync'in aktarım sunucusu yalnızca RAM üzerindedir; sıfır veri toplama ve kullanıcı hesabı gereksinimi vardır.", + "FAQ_A2": "MIT Lisansı kapsamında %100 ücretsiz ve açık kaynaklıdır. Premium katmanlar yok, kilitli özellikler yok, reklam yok, her şey dahil. Teleparty'nin aksine, KoalaSync'in aktarım sunucusu yalnızca RAM üzerindedir; sıfır veri toplama ve kullanıcı hesabı gereksinimi vardır.", "FAQ_Q3": "KoalaSync; Emby, Jellyfin ve kendi barındırdığınız medya sunucularıyla çalışır mı?", "FAQ_A3": "Evet. KoalaSync, herhangi bir standart HTML5 video öğesini algılar; bu da Emby, Jellyfin, Plex ve her türlü özel barındırılan akış kurulumuyla mükemmel çalıştığı anlamına gelir. Tam veri egemenliği için Docker aracılığıyla KoalaSync aktarım sunucusunu kendiniz de barındırabilirsiniz.", "FAQ_Q4": "Hangi tarayıcılar ve platformlar KoalaSync'i destekliyor?", - "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave ve tüm Chromium tabanlı tarayıcılar. Doğrudan Chrome Web Mağazası veya Firefox Eklentileri üzerinden kurun — manuel yapılandırmaya gerek yoktur.", + "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave ve tüm Chromium tabanlı tarayıcılar. Doğrudan Chrome Web Mağazası veya Firefox Eklentileri üzerinden kurun, manuel yapılandırmaya gerek yoktur.", "FAQ_Q5": "Tüm arkadaşlarımın eklentiyi kurması gerekiyor mu?", - "FAQ_A5": "Evet, her katılımcının KoalaSync'i kurması gerekir — ancak kayıt veya hesap oluşturma yoktur. Sadece davet bağlantısına tıklayın, henüz yapmadıysanız eklentiyi kurun, saniyeler içinde odaya otomatik olarak katılacaksınız.", + "FAQ_A5": "Evet, her katılımcının KoalaSync'i kurması gerekir, ancak kayıt veya hesap oluşturma yoktur. Sadece davet bağlantısına tıklayın, henüz yapmadıysanız eklentiyi kurun, saniyeler içinde odaya otomatik olarak katılacaksınız.", "FAQ_Q6": "Verilerim güvende mi? Ya resmi sunucuya güvenmiyorsam?", - "FAQ_A6": "Tamamen güvende. KoalaSync'in aktarım sunucusu yalnızca RAM üzerindedir — odadan ayrıldığınız andan itibaren tüm oturum verileri kalıcı olarak silinir. Veritabanı yok, günlük kaydı yok, analitik yok, hesap yok. Ve tam kontrolü tercih ediyorsanız: Docker aracılığıyla kendi özel aktarım sunucunuzu dakikalar içinde barındırabilirsiniz. Tüm kod tabanı açık kaynaklıdır ve GitHub'da denetlenebilir.", + "FAQ_A6": "Tamamen güvende. KoalaSync'in aktarım sunucusu yalnızca RAM üzerindedir, odadan ayrıldığınız andan itibaren tüm oturum verileri kalıcı olarak silinir. Veritabanı yok, günlük kaydı yok, analitik yok, hesap yok. Ve tam kontrolü tercih ediyorsanız: Docker aracılığıyla kendi özel aktarım sunucunuzu dakikalar içinde barındırabilirsiniz. Tüm kod tabanı açık kaynaklıdır ve GitHub'da denetlenebilir.", "FAQ_Q7": "Tarayıcıda video izlerken sessiz diyalogları ve yüksek patlamaları düzeltebilir miyim?", - "FAQ_A7": "Evet. KoalaSync 2.2.0, videonuzun sessiz ve yüksek kısımları arasındaki farkı azaltan yerleşik bir ses sıkıştırıcı içerir. Web Audio API aracılığıyla yerel olarak çalışır — hiçbir ses verisi bilgisayarınızdan çıkmaz. Popup'ı açın, bir oda oluşturun, Ayarlar → Audio Processing'e gidin, sıkıştırıcıyı açın ve bir ön ayar seçin. Netflix, Prime Video, Disney+, YouTube ve herhangi bir HTML5 video sitesinde çalışır.", + "FAQ_A7": "Evet. KoalaSync 2.2.0, videonuzun sessiz ve yüksek kısımları arasındaki farkı azaltan yerleşik bir ses sıkıştırıcı içerir. Web Audio API aracılığıyla yerel olarak çalışır, hiçbir ses verisi bilgisayarınızdan çıkmaz. Popup'ı açın, bir oda oluşturun, Ayarlar → Audio Processing'e gidin, sıkıştırıcıyı açın ve bir ön ayar seçin. Netflix, Prime Video, Disney+, YouTube ve herhangi bir HTML5 video sitesinde çalışır.", "HOWTO_TITLE": "KoalaSync kullanarak arkadaşlarınızla videoları senkronize etme", "HOWTO_DESC": "YouTube, Netflix, Twitch ve daha fazlasında arkadaşlarınızla mükemmel uyum içinde herhangi bir videoyu izleyin. Kayıt yok, takip yok.", "HOWTO_STEP_1_NAME": "Tarayıcı eklentisini kurun", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Sunucu Kontrolü", "MOCK_HOST_CONTROL_TOGGLE": "Oynatmayı yalnızca ben kontrol edebilirim", "LABEL_SELECT_VIDEO": "Video Seç", - "OPTION_SELECT_TAB": "-- Bir Sekme Seçin --" + "OPTION_SELECT_TAB": "-- Bir Sekme Seçin --", + "THEME_TOGGLE_LABEL": "Açık/koyu modu değiştir", + "FAQ_SHOW_ALL": "Tüm soruları göster", + "FAQ_HIDE_ALL": "Soruları gizle", + "SELF_SHOW_SETUP": "Kurulum rehberini göster", + "SELF_HIDE_SETUP": "Rehberi gizle", + "HERO_TRUST": "Ücretsiz · Açık kaynak · Hesap gerekmez" } diff --git a/website/locales/uk.json b/website/locales/uk.json index f94bc3b..46d9d39 100644 --- a/website/locales/uk.json +++ b/website/locales/uk.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "uk_UA", - "META_TITLE": "KoalaSync | Синхронізуйте Netflix, YouTube і будь-яке відео з друзями", - "META_DESCRIPTION": "Дивіться Netflix, YouTube, Twitch і будь-яке HTML5 відео в ідеальній синхронізації з друзями. Безкоштовне розширення для браузера з відкритим кодом для Chrome і Firefox. Реєстрація не потрібна.", - "SCHEMA_APP_DESC": "Дивіться Netflix, YouTube, Twitch і будь-яке HTML5 відео в ідеальній синхронізації з друзями. Безкоштовне розширення для браузера з відкритим кодом для Chrome і Firefox. Реєстрація не потрібна.", + "META_TITLE": "KoalaSync | Watch party для Netflix, YouTube та інших", + "META_DESCRIPTION": "Watch party у Netflix, YouTube, Twitch і будь-якому HTML5-відео. Безкоштовне розширення з відкритим кодом для Chrome і Firefox. Без акаунта, стеження та реклами.", + "SCHEMA_APP_DESC": "Watch party у Netflix, YouTube, Twitch і будь-якому HTML5-відео. Безкоштовне розширення з відкритим кодом для Chrome і Firefox. Без акаунта, стеження та реклами.", "OG_TITLE": "KoalaSync | Синхронізація Netflix, Emby, Jellyfin і майже будь-якого відео з друзями", "OG_DESCRIPTION": "Дивіться Netflix, Emby, Jellyfin, YouTube, Twitch і майже будь-яке відео HTML5 в ідеальній синхронізації. Розширення веб-переглядача з відкритим вихідним кодом для Chrome і Firefox, перш за все конфіденційність.", "TWITTER_TITLE": "KoalaSync | Синхронізація Netflix, Emby, Jellyfin і майже будь-якого відео з друзями – розширення браузера", "TWITTER_DESCRIPTION": "Дивіться Netflix, Emby, Jellyfin, YouTube, Twitch і майже будь-яке відео HTML5 в ідеальній синхронізації з друзями. Розширення веб-переглядача з відкритим вихідним кодом для Chrome і Firefox, перш за все конфіденційність.", "NAV_FEATURES": "особливості", "NAV_HOW_IT_WORKS": "Як це працює", - "HERO_TITLE": "Дивіться разом.Ідеальна синхронізація.", - "HERO_SUBTITLE": "Ваш віддалений кіновечір без лагів. Ні реєстрації, ні збору даних. Просто поділіться посиланням і дивіться разом.", + "HERO_TITLE": "Перетвори будь-яке відео на watch party.", + "HERO_SUBTITLE": "Ваш кіновечір на відстані, без затримок. Без акаунта, без стеження, без реклами. Просто поділіться посиланням і натисніть play разом.", "HERO_MASCOT_ALT": "Мила коала стоїть і дивиться вниз на кнопки завантаження", "DEMO_SYNC": "Синхронно", - "DEMO_HINT": "Жива демонстрація — натисніть play у будь-якій вкладці: KoalaSync синхронізує обидві.", + "DEMO_HINT": "Жива демонстрація: натисніть play у будь-якій вкладці, і KoalaSync синхронізує обидві.", "DEMO_NO_ROOM": "Ще не підключено", "DEMO_CREATE_ROOM": "Створити кімнату", "DEMO_JOINED": "У кімнаті", @@ -127,13 +127,13 @@ "FAQ_Q_VIDEO_ACCESS": "Чи транслює KoalaSync відео моїм друзям?", "FAQ_A_VIDEO_ACCESS": "Ні. KoalaSync не транслює, не розміщує, не поширює відеоконтент і не обходить доступ до нього. Кожен учасник дивиться відео локально у власному браузері та повинен мати власний доступ до сайту або стримінгового сервісу, наприклад власний акаунт Netflix. KoalaSync синхронізує лише дії відтворення, як-от запуск, паузу та перемотування.", "FAQ_Q2": "Чи є KoalaSync безкоштовною альтернативою Teleparty?", - "FAQ_A2": "100% безкоштовне та з відкритим кодом за ліцензією MIT. Без преміум-рівнів, без заблокованих функцій, без реклами — все включено. На відміну від Teleparty, ретрансляційний сервер KoalaSync призначений лише для RAM і не вимагає збору даних або облікових записів користувачів.", + "FAQ_A2": "100% безкоштовне та з відкритим кодом за ліцензією MIT. Без преміум-рівнів, без заблокованих функцій, без реклами, все включено. На відміну від Teleparty, ретрансляційний сервер KoalaSync призначений лише для RAM і не вимагає збору даних або облікових записів користувачів.", "FAQ_Q3": "Чи працює KoalaSync із Emby, Jellyfin і власними медіа-серверами?", "FAQ_A3": "так KoalaSync виявляє будь-який стандартний відеоелемент HTML5, що означає, що він ідеально працює з Emby, Jellyfin, Plex та будь-якими спеціальними налаштуваннями потокового передавання. Ви також можете самостійно розмістити сервер ретрансляції KoalaSync через Docker для повного суверенітету даних.", "FAQ_Q4": "Які браузери та платформи підтримують KoalaSync?", "FAQ_A4": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave та всі браузери на основі Chromium. Встановіть його безпосередньо з веб-магазину Chrome або додатків Firefox — ручне налаштування не потрібне.", "FAQ_Q5": "Чи всім моїм друзям потрібно встановити розширення?", - "FAQ_A5": "Так, кожному учаснику потрібно встановити KoalaSync — але немає реєстрації чи створення облікового запису. Просто клацніть посилання запрошення, установіть розширення, якщо ви ще цього не зробили, і ви автоматично приєднаєтесь до кімнати за лічені секунди.", + "FAQ_A5": "Так, кожному учаснику потрібно встановити KoalaSync, але немає реєстрації чи створення облікового запису. Просто клацніть посилання запрошення, установіть розширення, якщо ви ще цього не зробили, і ви автоматично приєднаєтесь до кімнати за лічені секунди.", "FAQ_Q6": "Чи мої дані в безпеці? Що робити, якщо я не довіряю офіційному серверу?", "FAQ_A6": "Повністю безпечний. Сервер ретрансляції KoalaSync призначений лише для RAM — усі дані сеансу назавжди видаляються, коли ви залишаєте кімнату. Ні бази даних, ні реєстрації, ні аналітики, ні облікових записів. А якщо ви віддаєте перевагу повному контролю: ви можете самостійно розмістити свій приватний сервер ретрансляції через Docker за лічені хвилини. Уся кодова база є відкритим кодом і доступна д��я перевірки на GitHub.", "FAQ_Q7": "Чи можу я виправити тихий діалог і гучні вибухи під час перегляду відео в браузері?", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "Керування ведучим", "MOCK_HOST_CONTROL_TOGGLE": "Тільки я можу керувати відтворенням", "LABEL_SELECT_VIDEO": "Виберіть Відео", - "OPTION_SELECT_TAB": "-- Виберіть вкладку --" + "OPTION_SELECT_TAB": "-- Виберіть вкладку --", + "THEME_TOGGLE_LABEL": "Перемкнути світлу/темну тему", + "FAQ_SHOW_ALL": "Показати всі запитання", + "FAQ_HIDE_ALL": "Приховати запитання", + "SELF_SHOW_SETUP": "Показати інструкцію з налаштування", + "SELF_HIDE_SETUP": "Приховати інструкцію", + "HERO_TRUST": "Безкоштовно · Відкритий код · Без акаунта" } diff --git a/website/locales/zh.json b/website/locales/zh.json index 54bb1e4..0e5d08a 100644 --- a/website/locales/zh.json +++ b/website/locales/zh.json @@ -5,20 +5,20 @@ "LANG_TOGGLE_URL": "../", "LANG_TOGGLE_TEXT": "EN", "OG_LOCALE": "zh_CN", - "META_TITLE": "KoalaSync | 与朋友同步 Netflix、YouTube 和任何视频", - "META_DESCRIPTION": "与朋友完美同步观看 Netflix、YouTube、Twitch 和任何 HTML5 视频。适用于 Chrome 和 Firefox 的免费开源浏览器扩展。无需注册。", - "SCHEMA_APP_DESC": "与朋友完美同步观看 Netflix、YouTube、Twitch 和任何 HTML5 视频。适用于 Chrome 和 Firefox 的免费开源浏览器扩展。无需注册。", + "META_TITLE": "KoalaSync | Netflix、YouTube 一起看派对浏览器扩展", + "META_DESCRIPTION": "在 Netflix、YouTube、Twitch 及任意 HTML5 视频上发起一起看派对。适用于 Chrome 和 Firefox 的免费开源扩展。无需账号、无跟踪、无广告。", + "SCHEMA_APP_DESC": "在 Netflix、YouTube、Twitch 及任意 HTML5 视频上发起一起看派对。适用于 Chrome 和 Firefox 的免费开源扩展。无需账号、无跟踪、无广告。", "OG_TITLE": "KoalaSync |与朋友同步 Netflix、Emby、Jellyfin 和几乎任何视频", "OG_DESCRIPTION": "完美同步观看 Netflix、Emby、Jellyfin、YouTube、Twitch 和几乎任何 HTML5 视频。适用于 Chrome 和 Firefox 的隐私第一开源浏览器扩展。", "TWITTER_TITLE": "KoalaSync |与朋友同步 Netflix、Emby、Jellyfin 和几乎所有视频 – 浏览器扩展", "TWITTER_DESCRIPTION": "与朋友完美同步观看 Netflix、Emby、Jellyfin、YouTube、Twitch 和几乎任何 HTML5 视频。适用于 Chrome 和 Firefox 的隐私第一开源浏览器扩展。", "NAV_FEATURES": "特征", "NAV_HOW_IT_WORKS": "它是如何运作的", - "HERO_TITLE": "一起观看. 完美同步.", - "HERO_SUBTITLE": "您的远程电影之夜没有延迟。无需注册,无需收集数据。只需分享链接即可一起观看。", + "HERO_TITLE": "把任意视频变成一起看派对。", + "HERO_SUBTITLE": "远程电影之夜,毫无延迟。无需账号、无跟踪、无广告。分享链接,一起播放。", "HERO_MASCOT_ALT": "一只可爱的考拉站着,低头看着下载按钮", "DEMO_SYNC": "同步中", - "DEMO_HINT": "在线演示 — 在任一标签页点击播放:KoalaSync 会让两边保持同步。", + "DEMO_HINT": "在线演示:在任一标签页点击播放,KoalaSync 会让两边保持同步。", "DEMO_NO_ROOM": "尚未连接", "DEMO_CREATE_ROOM": "创建房间", "DEMO_JOINED": "已加入房间", @@ -55,9 +55,9 @@ "FEATURE_6_TITLE": "即时邀请/一键加入", "FEATURE_6_DESC": "无需交换 IP 地址或密码。与您的朋友分享生成的邀请链接,让他们只需单击一下即可自动加入您的房间。", "FEATURE_7_TITLE": "音量调节/音频压缩器", - "FEATURE_7_DESC": "不再需要调节音量旋钮。内置音频压缩器可增强安静的对话并抑制大声的爆炸声。适用于 Netflix、Prime Video、Disney+、YouTube 和任何 HTML5 视频。完全本地化——音频数据不会离开您的计算机。", + "FEATURE_7_DESC": "不再需要调节音量旋钮。内置音频压缩器可增强安静的对话并抑制大声的爆炸声。适用于 Netflix、Prime Video、Disney+、YouTube 和任何 HTML5 视频。完全本地化处理,音频数据不会离开您的计算机。", "FEATURE_8_TITLE": "开源(MIT 许可证)", - "FEATURE_8_DESC": "整个代码库可在 GitHub 上公开审核。没有黑匣子,没有专有 blob——从中继服务器到浏览器扩展 100% 透明。", + "FEATURE_8_DESC": "整个代码库可在 GitHub 上公开审核。没有黑匣子,没有专有 blob,从中继服务器到浏览器扩展 100% 透明。", "COMP_TITLE": "KoalaSync 与 Teleparty", "COMP_SUBTITLE": "了解为什么开源、无广告和隐私优先是一起观看的最佳方式。", "COMP_COL_FEATURE": "特征", @@ -127,7 +127,7 @@ "FAQ_Q_VIDEO_ACCESS": "KoalaSync 会把视频串流给我的朋友吗?", "FAQ_A_VIDEO_ACCESS": "不会。KoalaSync 不会串流、托管、共享视频内容,也不会绕过任何访问权限。每个人都在自己的浏览器中本地观看视频,并且需要自己拥有该网站或流媒体服务的访问权限,例如自己的 Netflix 账号。KoalaSync 只同步播放、暂停和拖动进度等播放操作。", "FAQ_Q2": "KoalaSync 是 Teleparty 的免费替代品吗?", - "FAQ_A2": "在 MIT 许可证下 100% 免费和开源。没有高级套餐、没有锁定功能、没有广告——一切都包含在内。与 Teleparty 不同,KoalaSync 的中继服务器仅是 RAM,需要零数据收集或用户帐户。", + "FAQ_A2": "在 MIT 许可证下 100% 免费和开源。没有高级套餐、没有锁定功能、没有广告,一切都包含在内。与 Teleparty 不同,KoalaSync 的中继服务器仅是 RAM,需要零数据收集或用户帐户。", "FAQ_Q3": "KoalaSync 是否可以与 Emby、Jellyfin 和自托管媒体服务器配合使用?", "FAQ_A3": "是的。 KoalaSync 可检测任何标准 HTML5 视频元素,这意味着它可以与 Emby、Jellyfin、Plex 和任何自定义自托管流设置完美配合。您还可以通过 Docker 自托管 KoalaSync 中继服务器,以实现完整的数据主权。", "FAQ_Q4": "哪些浏览器和平台支持KoalaSync?", @@ -135,9 +135,9 @@ "FAQ_Q5": "我所有的朋友都需要安装该扩展吗?", "FAQ_A5": "是的,每个参与者都需要安装 KoalaSync - 但无需注册或创建帐户。只需单击邀请链接,安装扩展程序(如果尚未安装),您将在几秒钟内自动加入房间。", "FAQ_Q6": "我的数据安全吗?如果我不信任官方服务器怎么办?", - "FAQ_A6": "完全安全。 KoalaSync 的中继服务器仅限 RAM — 所有会话数据在您离开房间时都会永久删除。没有数据库,没有日志记录,没有分析,没有帐户。如果您喜欢完全控制:您可以在几分钟内通过 Docker 自行托管您自己的私人中继服务器。整个代码库是开源的,并且可以在 GitHub 上进行审核。", + "FAQ_A6": "完全安全。 KoalaSync 的中继服务器仅限 RAM,所有会话数据在您离开房间时都会永久删除。没有数据库,没有日志记录,没有分析,没有帐户。如果您喜欢完全控制:您可以在几分钟内通过 Docker 自行托管您自己的私人中继服务器。整个代码库是开源的,并且可以在 GitHub 上进行审核。", "FAQ_Q7": "我可以修复在浏览器中观看视频时安静的对话和大声的爆炸声吗?", - "FAQ_A7": "是的。 KoalaSync 2.2.0 包含一个内置音频压缩器,可减少视频安静部分和大声部分之间的差距。它通过 Web Audio API 在本地运行 — 任何音频数据都不会离开您的计算机。打开弹出窗口,创建一个房间,转到“设置”→“音频处理”,打开压缩器,然后选择一个预设。适用于 Netflix、Prime Video、Disney+、YouTube 和任何 HTML5 视频网站。", + "FAQ_A7": "是的。 KoalaSync 2.2.0 包含一个内置音频压缩器,可减少视频安静部分和大声部分之间的差距。它通过 Web Audio API 在本地运行,任何音频数据都不会离开您的计算机。打开弹出窗口,创建一个房间,转到“设置”→“音频处理”,打开压缩器,然后选择一个预设。适用于 Netflix、Prime Video、Disney+、YouTube 和任何 HTML5 视频网站。", "HOWTO_TITLE": "如何使用KoalaSync与好友同步视频", "HOWTO_DESC": "与 YouTube、Netflix、Twitch 等平台上的朋友完美同步观看任何视频。无需注册,无需跟踪。", "HOWTO_STEP_1_NAME": "安装浏览器扩展", @@ -188,7 +188,7 @@ "FOOTER_SUPPORT": "Support KoalaSync", "ALT_TELEPARTY_TITLE": "KoalaSync 与 Teleparty:你应该选择哪款在线同步观影工具?", "ALT_TELEPARTY_META_DESC": "针对 KoalaSync 和 Teleparty 的实用对比,涵盖内置聊天功能、移动端支持、浏览器视频同步、自建媒体服务器以及开源特性等方面。", - "ALT_TELEPARTY_INTRO": "KoalaSync 和 Teleparty 都能解决同一个令人头疼的问题:如何一起观看视频,而无需经历“3、2、1,开始播放”这种繁琐的同步步骤。只不过,它们采取了不同的实现方式。

如果你需要内置聊天功能或希望在移动设备上观看,Teleparty 是更合理的选择。KoalaSync 则更适合桌面浏览器观影场景——即你已经通过 Discord、TeamSpeak 或其他语音通话软件进行交流,只需确保视频播放保持同步即可。

我开发 KoalaSync 的主要初衷是为了灵活性。它旨在支持几乎所有使用标准浏览器视频播放器的网站,而不仅仅局限于特定的平台列表。这包括 Emby、Jellyfin 和 Plex 等自建媒体服务,本地/私有域名,以及浏览器中的各类常规视频页面。", + "ALT_TELEPARTY_INTRO": "KoalaSync 和 Teleparty 都能解决同一个令人头疼的问题:如何一起观看视频,而无需经历“3、2、1,开始播放”这种繁琐的同步步骤。只不过,它们采取了不同的实现方式。

如果你需要内置聊天功能或希望在移动设备上观看,Teleparty 是更合理的选择。KoalaSync 则更适合桌面浏览器观影场景,即你已经通过 Discord、TeamSpeak 或其他语音通话软件进行交流,只需确保视频播放保持同步即可。

我开发 KoalaSync 的主要初衷是为了灵活性。它旨在支持几乎所有使用标准浏览器视频播放器的网站,而不仅仅局限于特定的平台列表。这包括 Emby、Jellyfin 和 Plex 等自建媒体服务,本地/私有域名,以及浏览器中的各类常规视频页面。", "ALT_TELEPARTY_WHEN_TELE_TITLE": "Teleparty 依然适用的场景", "ALT_TELEPARTY_WHEN_TELE_BODY": "如果你希望聊天功能集成在观影工具本身之中,Teleparty 仍然是更好的选择。KoalaSync 目前没有内置聊天功能;它默认你已经在其他平台(如 Discord、TeamSpeak、WhatsApp、Signal 或常规通话)上进行交流。

移动端支持是另一个关键因素。Teleparty 拥有专属应用程序,而 KoalaSync 目前仅支持桌面浏览器。如果你想在手机或平板电脑上同步观看 Netflix,KoalaSync 暂时并不适用。

因此,如果你最看重聊天功能和移动端支持,Teleparty 可能会更适合你的使用需求。", "ALT_TELEPARTY_WHEN_KOALA_TITLE": "KoalaSync 适用场景", @@ -216,5 +216,11 @@ "MOCK_HOST_CONTROL_LABEL": "主持人控制", "MOCK_HOST_CONTROL_TOGGLE": "只有我可以控制播放", "LABEL_SELECT_VIDEO": "选择视频", - "OPTION_SELECT_TAB": "-- 选择一个选项卡 --" + "OPTION_SELECT_TAB": "-- 选择一个选项卡 --", + "THEME_TOGGLE_LABEL": "切换浅色/深色模式", + "FAQ_SHOW_ALL": "显示全部问题", + "FAQ_HIDE_ALL": "收起问题", + "SELF_SHOW_SETUP": "显示部署指南", + "SELF_HIDE_SETUP": "收起指南", + "HERO_TRUST": "免费 · 开源 · 无需账号" } diff --git a/website/privacy.html b/website/privacy.html index a1d2b35..7442573 100644 --- a/website/privacy.html +++ b/website/privacy.html @@ -119,7 +119,7 @@ To enable cross-device synchronization, the KoalaSync browser extension temporarily captures data from the currently active video tab (e.g., tab title, media metadata like the video title, and playback state). This data is exclusively sent to other participants in your room for synchronization. We explicitly do not read, store, or transmit your general browsing history.

- The extension only connects to the relay server while you are actively in a room. No persistent background connection is maintained — your IP address is not exposed to the server when you are not using the extension. + The extension only connects to the relay server while you are actively in a room. No persistent background connection is maintained, so your IP address is not exposed to the server when you are not using the extension.

diff --git a/website/style.css b/website/style.css index 8bfb276..bebbc7c 100644 --- a/website/style.css +++ b/website/style.css @@ -17,6 +17,11 @@ --success: #22c55e; --glass: rgba(30, 41, 59, 0.4); --glass-border: rgba(255, 255, 255, 0.05); + --section-tint: rgba(255, 255, 255, 0.02); + --section-tint-strong: rgba(15, 23, 42, 0.4); + --card-surface: rgba(30, 41, 59, 0.45); + --card-border: rgba(255, 255, 255, 0.08); + color-scheme: dark; } .invite-banner { @@ -138,6 +143,16 @@ nav { backdrop-filter: blur(12px); border-bottom: 1px solid var(--glass-border); padding: 1rem 0; + transition: padding 0.3s ease, background 0.3s ease; +} + +nav.nav-scrolled { + padding: 0.75rem 0; + background: rgba(15, 23, 42, 0.9); +} + +html.theme-light nav.nav-scrolled { + background: rgba(241, 245, 249, 0.92); } .nav-content { @@ -214,6 +229,150 @@ nav { flex-shrink: 0; } +/* --- Theme Toggle (sun/moon) --- */ +.theme-toggle { + display: inline-flex; + align-items: center; + justify-content: center; + width: 36px; + height: 36px; + padding: 0; + background: transparent; + border: 1px solid var(--glass-border); + border-radius: 10px; + color: var(--text-muted); + cursor: pointer; + flex-shrink: 0; + transition: color 0.3s, border-color 0.3s, background 0.3s, transform 0.3s; +} + +.theme-toggle:hover { + color: var(--accent); + border-color: rgba(99, 102, 241, 0.4); + transform: rotate(15deg); +} + +.theme-toggle .theme-icon-sun { display: block; } +.theme-toggle .theme-icon-moon { display: none; } +html.theme-light .theme-toggle .theme-icon-sun { display: none; } +html.theme-light .theme-toggle .theme-icon-moon { display: block; } + +/* --- Light Theme --- */ +html.theme-light { + --bg: #f1f5f9; + --card: #ffffff; + --accent: #5b5de8; + --accent-glow: rgba(91, 93, 232, 0.25); + --text: #0f172a; + --text-muted: #475569; + --glass: rgba(255, 255, 255, 0.7); + --glass-border: rgba(15, 23, 42, 0.08); + --section-tint: rgba(15, 23, 42, 0.025); + --section-tint-strong: rgba(15, 23, 42, 0.05); + --card-surface: rgba(255, 255, 255, 0.75); + --card-border: rgba(15, 23, 42, 0.08); + color-scheme: light; +} + +html.theme-light .bg-blobs { + background: radial-gradient(circle at 50% 50%, #e0e7ff 0%, #f1f5f9 100%); +} + +html.theme-light .blob { + opacity: 0.35; +} + +html.theme-light .feature-card, +html.theme-light .faq-item { + background: var(--card-surface); + border-color: var(--card-border); + box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06); +} + +html.theme-light .feature-card::before { + background: linear-gradient(to bottom right, rgba(15, 23, 42, 0.08), transparent); +} + +html.theme-light .use-case-card { + background: var(--card-surface); +} + +html.theme-light .use-case-card h3 { + color: var(--text); +} + +html.theme-light .use-case-card:hover { + box-shadow: 0 12px 30px rgba(15, 23, 42, 0.12); + border-color: rgba(15, 23, 42, 0.15); +} + +html.theme-light .faq-item[open] { + background: #ffffff; +} + +html.theme-light .faq-item p { + border-top-color: rgba(15, 23, 42, 0.08); +} + +html.theme-light .btn-secondary { + background: #ffffff; + border-color: rgba(15, 23, 42, 0.12); +} + +html.theme-light .btn-secondary:hover { + background: #e2e8f0; +} + +html.theme-light .comparison-section { + background: rgba(15, 23, 42, 0.02); +} + +html.theme-light .comparison-table-wrapper { + background: rgba(255, 255, 255, 0.75); + box-shadow: 0 10px 30px rgba(15, 23, 42, 0.08); +} + +html.theme-light .comparison-table th { + background: rgba(15, 23, 42, 0.06); + color: var(--text); +} + +html.theme-light .comparison-table th, +html.theme-light .comparison-table td { + border-bottom-color: rgba(15, 23, 42, 0.08); +} + +html.theme-light .comparison-table tbody tr:hover { + background: rgba(15, 23, 42, 0.03); +} + +html.theme-light .feat-name strong { + color: var(--text); +} + +html.theme-light .table-footnotes { + background: rgba(15, 23, 42, 0.04); + border-top-color: rgba(15, 23, 42, 0.06); +} + +@media (max-width: 900px) { + html.theme-light .comparison-table tbody tr { + background: rgba(255, 255, 255, 0.85); + box-shadow: 0 6px 18px rgba(15, 23, 42, 0.08); + } + html.theme-light .comparison-table td.feat-name { + background: rgba(15, 23, 42, 0.05); + } + html.theme-light .comparison-table td { + border-bottom-color: rgba(15, 23, 42, 0.08); + } +} + +html.theme-light .compat-logo img, +html.theme-light .compat-logo { + filter: none; +} + /* --- Hero Section --- */ .hero { min-height: 100vh; @@ -250,19 +409,39 @@ nav { } .hero-text h1 { - font-size: clamp(3.3rem, 4.35vw, 4.4rem); + font-size: clamp(2.9rem, 4.1vw, 4rem); font-weight: 800; - line-height: 1.1; + line-height: 1.12; margin-bottom: 1.4rem; padding-bottom: 0.1em; - background: linear-gradient(to bottom, #fff 40%, #6366f1); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; + color: var(--text); + letter-spacing: -0.02em; } -.hero-text h1 .hero-line2 { - display: block; - margin-top: 0.2em; +.hero-text h1 .hero-highlight { + background: linear-gradient(90deg, #6366f1, #a855f7, #38bdf8, #6366f1); + background-size: 300% 100%; + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: transparent; + white-space: nowrap; + animation: hero-gradient-pan 10s linear infinite; + /* background-clip: text only paints inside the layout box; with the + negative h1 letter-spacing the last glyph overhangs it and gets cut + off. Invisible padding extends the paint area without moving text. */ + padding-right: 0.08em; + margin-right: -0.08em; +} + +@keyframes hero-gradient-pan { + from { background-position: 0% 50%; } + to { background-position: 300% 50%; } +} + +@media (prefers-reduced-motion: reduce) { + .hero-text h1 .hero-highlight { + animation: none; + } } .hero-text p, .hero-subtitle { @@ -275,6 +454,7 @@ nav { } .hero-mascot-container { + position: relative; display: block; margin-bottom: -0.5rem; margin-left: 2.2rem; @@ -286,12 +466,127 @@ nav { height: auto; } +/* Changelog link as the koala's comic speech bubble. Absolutely positioned + so it never moves the koala out of its spot above the install buttons. */ +.koala-speech-bubble { + position: absolute; + left: 108px; + top: 0.2rem; + width: max-content; + max-width: min(240px, calc(100% - 120px)); + display: block; + text-decoration: none; + text-align: left; + background: rgba(30, 41, 59, 0.95); + border: 1px solid rgba(99, 102, 241, 0.45); + border-radius: 14px; + border-bottom-left-radius: 4px; + padding: 0.6rem 0.9rem; + line-height: 1.35; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35); + animation: bubble-float 4s ease-in-out infinite; + transition: border-color 0.25s ease, box-shadow 0.25s ease; +} + +/* Tail: outline triangle + fill triangle so it reads as part of the bubble */ +.koala-speech-bubble::before, +.koala-speech-bubble::after { + content: ''; + position: absolute; + width: 0; + height: 0; +} + +.koala-speech-bubble::before { + left: -11px; + bottom: 10px; + border-top: 8px solid transparent; + border-bottom: 4px solid transparent; + border-right: 11px solid rgba(99, 102, 241, 0.45); +} + +.koala-speech-bubble::after { + left: -9px; + bottom: 11px; + border-top: 7px solid transparent; + border-bottom: 3px solid transparent; + border-right: 10px solid rgba(30, 41, 59, 0.95); +} + +.koala-speech-bubble:hover { + border-color: rgba(99, 102, 241, 0.85); + box-shadow: 0 8px 28px rgba(99, 102, 241, 0.35); +} + +.koala-speech-bubble .version-text-en, +.koala-speech-bubble .version-text-de { + display: block; +} + +.koala-speech-bubble .bubble-title { + display: block; + font-size: 0.85rem; + font-weight: 800; + color: var(--text); + letter-spacing: 0; + white-space: nowrap; +} + +.koala-speech-bubble .bubble-sub { + display: block; + font-size: 0.72rem; + font-weight: 600; + color: var(--accent); + margin-top: 2px; +} + +html.theme-light .koala-speech-bubble { + background: rgba(255, 255, 255, 0.96); + box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12); +} + +html.theme-light .koala-speech-bubble::after { + border-right-color: rgba(255, 255, 255, 0.96); +} + +@keyframes bubble-float { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-4px); } +} + +@media (prefers-reduced-motion: reduce) { + .koala-speech-bubble { + animation: none; + } +} + @media (max-width: 768px) { + /* The koala keeps standing on the CTA button (nudged just slightly left + to give the bubble room); the bubble is absolute and wraps its text. */ .hero-mascot-container { margin-left: 0; display: flex; justify-content: center; } + .hero-lookdown-mascot { + transform: translateX(-32px); + } + .koala-speech-bubble { + left: calc(50% + 18px); + top: 0.3rem; + max-width: min(240px, calc(50% - 26px)); + padding: 0.5rem 0.75rem; + } + .koala-speech-bubble .bubble-title { + font-size: 0.8rem; + } + .koala-speech-bubble .bubble-sub { + font-size: 0.68rem; + } + /* The relative release time is too much text for the small mobile bubble */ + .koala-speech-bubble .bubble-ago { + display: none; + } } .cta-group { @@ -300,6 +595,19 @@ nav { flex-wrap: wrap; } +/* Quiet trust line under the install buttons; answers "is it free, is it + legit, do I need an account" right at the moment of the click decision. */ +.hero-text .cta-trust { + margin-top: 0.85rem; + margin-bottom: 0; + font-size: 0.8rem; + font-weight: 500; + color: var(--text-muted); + opacity: 0.75; + letter-spacing: 0.01em; + max-width: none; +} + .btn { padding: 0.85rem 1.75rem; border-radius: 12px; @@ -834,6 +1142,25 @@ input:checked + .mock-slider:before { margin-top: 4rem; } +/* Combined use-cases + feature tiles grid */ +.features-grid-combined { + margin-top: 2rem; + scroll-margin-top: 100px; +} + +.features-grid-combined .feature-card { + padding: 1.8rem; +} + +.features-grid-combined .feature-card h3 { + font-size: 1.1rem; + margin-bottom: 0.75rem; +} + +.features-grid-combined .feature-card p { + font-size: 0.9rem; +} + .feature-card { background: rgba(30, 41, 59, 0.45); backdrop-filter: blur(16px) saturate(120%); @@ -2224,16 +2551,16 @@ html:not(.lang-de) [lang="de"] { /* --- Compatibility Section --- */ .compat-section { - padding: 1rem 0 3.5rem 0; + padding: 0.5rem 0 2.5rem 0; text-align: center; - background: rgba(255,255,255,0.01); + background: var(--section-tint); border-bottom: 1px solid var(--glass-border); } .compat-mascot { display: block; - margin: 0 auto 0.5rem auto; - max-width: 368px; + margin: 0 auto 0.3rem auto; + max-width: 270px; width: 100%; height: auto; transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); @@ -2249,7 +2576,7 @@ html:not(.lang-de) [lang="de"] { color: var(--text-muted); letter-spacing: 0.08em; text-transform: uppercase; - margin-bottom: 2rem; + margin-bottom: 1.4rem; } .compat-row { @@ -2902,7 +3229,78 @@ html:not(.lang-de) [lang="de"] { box-shadow: 0 20px 25px -5px rgba(34, 197, 94, 0.4); } +/* --- Section collapse (FAQ, self-hosting): closed by default to keep the page short --- */ +.section-collapse { + margin: 0 auto; +} + +.faq-section-collapse { + max-width: 800px; +} + +.collapse-summary { + display: flex; + align-items: center; + justify-content: center; + gap: 0.6rem; + list-style: none; + cursor: pointer; + font-weight: 700; + font-size: 1rem; + color: var(--accent); + background: rgba(99, 102, 241, 0.08); + border: 1px solid rgba(99, 102, 241, 0.3); + border-radius: 99px; + padding: 0.85rem 2rem; + max-width: 360px; + margin: 0 auto; + transition: background 0.3s, box-shadow 0.3s, transform 0.3s; +} + +.collapse-summary::-webkit-details-marker { + display: none; +} + +.collapse-summary:hover { + background: rgba(99, 102, 241, 0.16); + box-shadow: 0 0 20px rgba(99, 102, 241, 0.25); + transform: translateY(-2px); +} + +.collapse-summary .collapse-chevron { + flex-shrink: 0; + transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1); +} + +.section-collapse[open] .collapse-chevron { + transform: rotate(180deg); +} + +.collapse-label-hide { display: none; } +.section-collapse[open] .collapse-label-show { display: none; } +.section-collapse[open] .collapse-label-hide { display: inline; } + +.section-collapse[open] .collapse-summary { + margin-bottom: 2rem; +} + +.section-collapse[open] .collapse-content { + animation: collapse-content-in 0.4s ease-out; +} + +@keyframes collapse-content-in { + from { opacity: 0; transform: translateY(10px); } + to { opacity: 1; transform: translateY(0); } +} + +@media (prefers-reduced-motion: reduce) { + .section-collapse[open] .collapse-content { + animation: none; + } +} + /* --- FAQ Section --- */ + .faq-grid { display: flex; flex-direction: column; diff --git a/website/template.html b/website/template.html index f76694a..c951622 100644 --- a/website/template.html +++ b/website/template.html @@ -36,7 +36,10 @@ - + + + + @@ -59,7 +62,7 @@ - + @@ -106,7 +109,7 @@ "priceCurrency": "EUR" }, "description": "{{SCHEMA_APP_DESC}}", - "softwareVersion": "2.5.3", + "softwareVersion": "{{VERSION}}", "license": "https://opensource.org/licenses/MIT", "sameAs": "https://github.com/Shik3i/KoalaSync", "image": "https://sync.koalastuff.net/assets/NewLogoIcon.webp", @@ -247,6 +250,10 @@ - - - - +
+
-

- - - - {{FEATURE_2_TITLE}} -

-

{{FEATURE_2_DESC}}

-
- - -
-

- - - - {{FEATURE_3_TITLE}} -

-

{{FEATURE_3_DESC}}

-
- STATE: VOLATILE - RAM-ONLY -
-
- - -
-

- - - - {{FEATURE_4_TITLE}} -

-

{{FEATURE_4_DESC}}

-
- - -

@@ -877,40 +819,33 @@

{{FEATURE_6_DESC}}

- +

- + - {{FEATURE_5_TITLE}} + {{FEATURE_3_TITLE}}

-

{{FEATURE_5_DESC}}

+

{{FEATURE_3_DESC}}

+
+ STATE: VOLATILE + RAM-ONLY +
- +

- + - {{FEATURE_8_TITLE}} + {{FEATURE_4_TITLE}}

-

{{FEATURE_8_DESC}}

+

{{FEATURE_4_DESC}}

- -
-

- - - - {{FEATURE_7_TITLE}} -

-

{{FEATURE_7_DESC}}

-
- @@ -1034,7 +969,7 @@ -
+

{{STEPS_TITLE}} @@ -1244,7 +1179,7 @@

-
+

{{SELF_TITLE}} @@ -1258,7 +1193,13 @@ {{SELF_MASCOT_ALT}}

-
+
+ + {{SELF_SHOW_SETUP}} + {{SELF_HIDE_SETUP}} + + +
@@ -1360,52 +1301,61 @@ }
-
+
+
+ A cute koala holding a question mark wondering about KoalaSync

{{FAQ_TITLE}}

-

+

{{FAQ_SUBTITLE}}

-
-
- {{FAQ_Q1}} -

{{FAQ_A1}}

-
-
- {{FAQ_Q_VIDEO_ACCESS}} -

{{FAQ_A_VIDEO_ACCESS}}

-
-
- {{FAQ_Q2}} -

{{FAQ_A2}}

-
-
- {{FAQ_Q3}} -

{{FAQ_A3}}

-
-
- {{FAQ_Q4}} -

{{FAQ_A4}}

-
-
- {{FAQ_Q5}} -

{{FAQ_A5}}

-
-
- {{FAQ_Q6}} -

{{FAQ_A6}}

-
-
- {{FAQ_Q7}} -

{{FAQ_A7}}

-
-
+
+ + {{FAQ_SHOW_ALL}} + {{FAQ_HIDE_ALL}} + + +
+
+ {{FAQ_Q1}} +

{{FAQ_A1}}

+
+
+ {{FAQ_Q_VIDEO_ACCESS}} +

{{FAQ_A_VIDEO_ACCESS}}

+
+
+ {{FAQ_Q2}} +

{{FAQ_A2}}

+
+
+ {{FAQ_Q3}} +

{{FAQ_A3}}

+
+
+ {{FAQ_Q4}} +

{{FAQ_A4}}

+
+
+ {{FAQ_Q5}} +

{{FAQ_A5}}

+
+
+ {{FAQ_Q6}} +

{{FAQ_A6}}

+
+
+ {{FAQ_Q7}} +

{{FAQ_A7}}

+
+
+