From 9e2abadf5af4c51e54b58c1086490502590b57ad Mon Sep 17 00:00:00 2001 From: Timo <6156589+Shik3i@users.noreply.github.com> Date: Mon, 8 Jun 2026 20:36:49 +0200 Subject: [PATCH] v2.2.0: audio compressor, Ko-Fi support, 11 new locale translations, website locale test --- docs/CHANGELOG.md | 19 +++++++- extension/locales/es.json | 38 +++++++-------- extension/locales/fr.json | 38 +++++++-------- extension/locales/it.json | 38 +++++++-------- extension/locales/ja.json | 38 +++++++-------- extension/locales/ko.json | 38 +++++++-------- extension/locales/nl.json | 34 +++++++------- extension/locales/pl.json | 36 +++++++-------- extension/locales/pt-BR.json | 36 +++++++-------- extension/locales/pt.json | 36 +++++++-------- extension/locales/ru.json | 38 +++++++-------- extension/locales/tr.json | 38 +++++++-------- scripts/test-website-locales.mjs | 61 +++++++++++++++++++++++++ scripts/verify-release.mjs | 1 + website/assets/NewLogoIcon_64.webp | Bin 1282 -> 1282 bytes website/locales/de.json | 2 +- website/locales/en.json | 2 +- website/locales/es.json | 2 +- website/locales/fr.json | 2 +- website/locales/ko.json | 2 +- website/locales/pt-BR.json | 2 +- website/locales/pt.json | 8 ++-- website/locales/ru.json | 2 +- website/www/assets/NewLogoIcon_64.avif | Bin 1822 -> 1823 bytes website/www/assets/NewLogoIcon_64.webp | Bin 1282 -> 1282 bytes website/www/de/index.html | 2 +- website/www/es/index.html | 2 +- website/www/fr/index.html | 2 +- website/www/index.html | 2 +- website/www/ko/index.html | 2 +- website/www/pt-BR/index.html | 2 +- website/www/pt/index.html | 10 ++-- website/www/ru/index.html | 2 +- 33 files changed, 307 insertions(+), 228 deletions(-) create mode 100644 scripts/test-website-locales.mjs diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index b9608a7..a552aaa 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,7 +4,24 @@ All notable changes to the KoalaSync browser extension and relay server. --- -## [v2.1.3] — 2026-06-06 +## [v2.2.0] — 2026-06-08 + +### Added +- **Web Audio API Compressor**: Built-in audio dynamic range compression with four presets (Recommended, Dynamic Range, Vocal Enhancement, Smooth) and fully customizable sliders (threshold, ratio, knee, attack, release, makeup gain). Uses dry/wet crossfade (40ms linear ramp) to avoid clicks. Configured via the new Audio Options page accessible from the Settings tab. +- **Master Audio Toggle**: Global on/off switch for audio processing in both the extension popup and Audio Options page, synced via `chrome.storage.sync`. +- **Audio Options Page** (`audio-options.html`): Dedicated settings page with master toggle, compressor preset selector, real-time custom sliders, and equalizer placeholder. Dark theme matching the popup design. +- **Ko-Fi Support Links**: Static footer badges on the Settings and Status tabs linking to `https://support.koalastuff.net` (redirect owned by the developer). README now includes a Ko-Fi sponsor badge. Website footer updated with a styled Ko-Fi pill button (heart icon + "Ko-Fi"). +- **Feature Hint System**: Generic `dismissedHints` array in sync storage for announcing new features. First hint highlights the Audio Options entry in Settings. Extensible for future features. +- **11 New Locale Translations**: 23 new i18n keys (audio processing, support links, etc.) fully translated into Spanish, French, Italian, Japanese, Korean, Dutch, Polish, European Portuguese, Brazilian Portuguese, Russian, and Turkish. +- **Website Locale Consistency Test** (`scripts/test-website-locales.mjs`): Validates all 12 non-English website locale files have exactly the same keys as `en.json`. Runs automatically as part of `npm run verify`. + +### Fixed +- **Portuguese (PT) locale**: Removed Italian contamination — "sincronizzazione" → "sincronização", "tempo reale" → "tempo real", "Link di Invito" → "Link de Convite", "Sair della Sala" → "Sair da Sala". +- **Korean locale**: Fixed broken character in `HOWTO_STEP_2_TEXT` (`클rip보드` → `클립보드`). +- **Website COMP_FEAT_6_KOALA**: Normalized from inconsistent "6 Languages" to "13 Languages" across all locale files (en, de, es, fr, pt-BR, ru). + +### Changed +- **ROADMAP.md**: Removed outdated cache LRU eviction item (already solved via time-based + insertion-order Map). Translated remaining German text to English. ### Fixed - **Debug report showing wrong logs**: Fixed `logs.slice(-50)` and `history.slice(-20)` in the "Copy Debug Report" feature. Since `addLog()` and `addToHistory()` use `unshift` (inserting entries at index 0), the arrays are ordered newest-first. `slice(-N)` took the N **oldest** entries instead of the N **newest**. Changed to `slice(0, N).reverse()` to correctly include the most recent logs and display them chronologically. diff --git a/extension/locales/es.json b/extension/locales/es.json index 1711a0e..d3bd9c5 100644 --- a/extension/locales/es.json +++ b/extension/locales/es.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "Tiempo de espera agotado: no todos los participantes cargaron el episodio", "LOBBY_CANCEL_USER": "Cancelado por el usuario", "NOTIF_ERROR_TITLE": "Error de KoalaSync", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", - "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", - "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "FOOTER_SUPPORT": "♥ Apoyar", + "FOOTER_REVIEW": "★ Valorar", + "LABEL_AUDIO_PROCESSING": "Procesamiento de audio", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "Aplica efectos de audio como compresión a la reproducción de video", + "AUDIO_OPEN_SETTINGS": "Abrir configuración de audio", + "NEW_FEATURE_AUDIO": "Nuevo: Procesamiento de audio — ¡prueba el compresor!", + "AUDIO_PAGE_TITLE": "Configuración de audio", + "AUDIO_MASTER_TOGGLE": "Procesamiento de audio", + "AUDIO_COMPRESSOR": "Compresor", + "AUDIO_COMPRESSOR_ENABLE": "Activado", + "AUDIO_PRESET": "Preajuste", + "AUDIO_PRESET_RECOMMENDED": "Recomendado", + "AUDIO_PRESET_DYNAMIC_RANGE": "Rango dinámico", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Mejora de voz", + "AUDIO_PRESET_SMOOTH": "Suave", + "AUDIO_PRESET_CUSTOM": "Personalizado", + "AUDIO_PARAM_THRESHOLD": "Umbral", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", - "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_EQUALIZER": "Ecualizador", + "AUDIO_COMING_SOON": "Próximamente" } diff --git a/extension/locales/fr.json b/extension/locales/fr.json index 9d761a3..b26162d 100644 --- a/extension/locales/fr.json +++ b/extension/locales/fr.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "Délai dépassé — tous les membres n'ont pas chargé l'épisode", "LOBBY_CANCEL_USER": "Annulé par l'utilisateur", "NOTIF_ERROR_TITLE": "Erreur KoalaSync", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", - "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", - "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "FOOTER_SUPPORT": "♥ Soutenir", + "FOOTER_REVIEW": "★ Évaluer", + "LABEL_AUDIO_PROCESSING": "Traitement audio", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "Applique des effets audio comme la compression à la lecture vidéo", + "AUDIO_OPEN_SETTINGS": "Ouvrir les paramètres audio", + "NEW_FEATURE_AUDIO": "Nouveau : Traitement audio — essayez le compresseur !", + "AUDIO_PAGE_TITLE": "Paramètres audio", + "AUDIO_MASTER_TOGGLE": "Traitement audio", + "AUDIO_COMPRESSOR": "Compresseur", + "AUDIO_COMPRESSOR_ENABLE": "Activé", + "AUDIO_PRESET": "Préréglage", + "AUDIO_PRESET_RECOMMENDED": "Recommandé", + "AUDIO_PRESET_DYNAMIC_RANGE": "Plage dynamique", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Amélioration vocale", + "AUDIO_PRESET_SMOOTH": "Douce", + "AUDIO_PRESET_CUSTOM": "Personnalisé", + "AUDIO_PARAM_THRESHOLD": "Seuil", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", - "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_EQUALIZER": "Égaliseur", + "AUDIO_COMING_SOON": "Bientôt disponible" } diff --git a/extension/locales/it.json b/extension/locales/it.json index 95b2e90..23fd3ac 100644 --- a/extension/locales/it.json +++ b/extension/locales/it.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "Timeout — non tutti i partecipanti hanno caricato l'episodio", "LOBBY_CANCEL_USER": "Annullato dall'utente", "NOTIF_ERROR_TITLE": "Errore KoalaSync", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", - "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", - "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "FOOTER_SUPPORT": "♥ Supporta", + "FOOTER_REVIEW": "★ Valuta", + "LABEL_AUDIO_PROCESSING": "Elaborazione audio", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "Applica effetti audio come la compressione alla riproduzione video", + "AUDIO_OPEN_SETTINGS": "Apri impostazioni audio", + "NEW_FEATURE_AUDIO": "Novità: Elaborazione audio — prova il compressore!", + "AUDIO_PAGE_TITLE": "Impostazioni audio", + "AUDIO_MASTER_TOGGLE": "Elaborazione audio", + "AUDIO_COMPRESSOR": "Compressore", + "AUDIO_COMPRESSOR_ENABLE": "Attivato", + "AUDIO_PRESET": "Preimpostazione", + "AUDIO_PRESET_RECOMMENDED": "Consigliato", + "AUDIO_PRESET_DYNAMIC_RANGE": "Gamma dinamica", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Miglioramento vocale", + "AUDIO_PRESET_SMOOTH": "Morbido", + "AUDIO_PRESET_CUSTOM": "Personalizzato", + "AUDIO_PARAM_THRESHOLD": "Soglia", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", - "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_EQUALIZER": "Equalizzatore", + "AUDIO_COMING_SOON": "Prossimamente" } diff --git a/extension/locales/ja.json b/extension/locales/ja.json index 6d8864d..e299d10 100644 --- a/extension/locales/ja.json +++ b/extension/locales/ja.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "タイムアウト — 一部のメンバーがエピソードを読み込めませんでした", "LOBBY_CANCEL_USER": "ユーザーによってキャンセルされました", "NOTIF_ERROR_TITLE": "KoalaSyncエラー", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", - "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", - "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "FOOTER_SUPPORT": "♥ サポート", + "FOOTER_REVIEW": "★ 評価する", + "LABEL_AUDIO_PROCESSING": "オーディオ処理", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "動画再生に圧縮などのオーディオエフェクトを適用します", + "AUDIO_OPEN_SETTINGS": "オーディオ設定を開く", + "NEW_FEATURE_AUDIO": "新機能: オーディオ処理 — コンプレッサーを試してみよう!", + "AUDIO_PAGE_TITLE": "オーディオ設定", + "AUDIO_MASTER_TOGGLE": "オーディオ処理", + "AUDIO_COMPRESSOR": "コンプレッサー", + "AUDIO_COMPRESSOR_ENABLE": "有効", + "AUDIO_PRESET": "プリセット", + "AUDIO_PRESET_RECOMMENDED": "推奨", + "AUDIO_PRESET_DYNAMIC_RANGE": "ダイナミックレンジ", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "ボーカル強調", + "AUDIO_PRESET_SMOOTH": "スムース", + "AUDIO_PRESET_CUSTOM": "カスタム", + "AUDIO_PARAM_THRESHOLD": "スレッショルド", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", - "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_EQUALIZER": "イコライザー", + "AUDIO_COMING_SOON": "近日公開" } diff --git a/extension/locales/ko.json b/extension/locales/ko.json index 6a971f3..eba859a 100644 --- a/extension/locales/ko.json +++ b/extension/locales/ko.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "시간 초과 — 모든 피어가 에피소드를 로드하지 못했습니다", "LOBBY_CANCEL_USER": "사용자에 의해 취소됨", "NOTIF_ERROR_TITLE": "KoalaSync 오류", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", - "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", - "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "FOOTER_SUPPORT": "♥ 후원", + "FOOTER_REVIEW": "★ 평가하기", + "LABEL_AUDIO_PROCESSING": "오디오 처리", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "비디오 재생에 압축과 같은 오디오 효과를 적용합니다", + "AUDIO_OPEN_SETTINGS": "오디오 설정 열기", + "NEW_FEATURE_AUDIO": "신규: 오디오 처리 — 컴프레서를 사용해보세요!", + "AUDIO_PAGE_TITLE": "오디오 설정", + "AUDIO_MASTER_TOGGLE": "오디오 처리", + "AUDIO_COMPRESSOR": "컴프레서", + "AUDIO_COMPRESSOR_ENABLE": "활성화", + "AUDIO_PRESET": "프리셋", + "AUDIO_PRESET_RECOMMENDED": "추천", + "AUDIO_PRESET_DYNAMIC_RANGE": "다이내믹 레인지", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "음성 강화", + "AUDIO_PRESET_SMOOTH": "부드럽게", + "AUDIO_PRESET_CUSTOM": "사용자 정의", + "AUDIO_PARAM_THRESHOLD": "임계값", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", - "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_EQUALIZER": "이퀄라이저", + "AUDIO_COMING_SOON": "출시 예정" } diff --git a/extension/locales/nl.json b/extension/locales/nl.json index 233b6ba..aae9fc6 100644 --- a/extension/locales/nl.json +++ b/extension/locales/nl.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "Time-out — niet alle deelnemers hebben de aflevering geladen", "LOBBY_CANCEL_USER": "Geannuleerd door gebruiker", "NOTIF_ERROR_TITLE": "KoalaSync-fout", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", + "FOOTER_SUPPORT": "♥ Steunen", + "FOOTER_REVIEW": "★ Beoordelen", + "LABEL_AUDIO_PROCESSING": "Audioverwerking", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "Past audio-effecten zoals compressie toe op video-afspelen", + "AUDIO_OPEN_SETTINGS": "Audio-instellingen openen", + "NEW_FEATURE_AUDIO": "Nieuw: Audioverwerking — probeer de compressor!", + "AUDIO_PAGE_TITLE": "Audio-instellingen", + "AUDIO_MASTER_TOGGLE": "Audioverwerking", "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", - "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "AUDIO_COMPRESSOR_ENABLE": "Ingeschakeld", + "AUDIO_PRESET": "Voorinstelling", + "AUDIO_PRESET_RECOMMENDED": "Aanbevolen", + "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamisch bereik", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Stemverbetering", + "AUDIO_PRESET_SMOOTH": "Zacht", + "AUDIO_PRESET_CUSTOM": "Aangepast", + "AUDIO_PARAM_THRESHOLD": "Drempel", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_COMING_SOON": "Binnenkort beschikbaar" } diff --git a/extension/locales/pl.json b/extension/locales/pl.json index 66f1c5c..f88f0e8 100644 --- a/extension/locales/pl.json +++ b/extension/locales/pl.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "Limit czasu — nie wszyscy uczestnicy załadowali odcinek", "LOBBY_CANCEL_USER": "Anulowane przez użytkownika", "NOTIF_ERROR_TITLE": "Błąd KoalaSync", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", - "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", + "FOOTER_SUPPORT": "♥ Wsparcie", + "FOOTER_REVIEW": "★ Oceń", + "LABEL_AUDIO_PROCESSING": "Przetwarzanie dźwięku", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "Stosuje efekty dźwiękowe, takie jak kompresja, do odtwarzania wideo", + "AUDIO_OPEN_SETTINGS": "Otwórz ustawienia dźwięku", + "NEW_FEATURE_AUDIO": "Nowość: Przetwarzanie dźwięku — wypróbuj kompresor!", + "AUDIO_PAGE_TITLE": "Ustawienia dźwięku", + "AUDIO_MASTER_TOGGLE": "Przetwarzanie dźwięku", + "AUDIO_COMPRESSOR": "Kompresor", + "AUDIO_COMPRESSOR_ENABLE": "Włączony", "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "AUDIO_PRESET_RECOMMENDED": "Zalecany", + "AUDIO_PRESET_DYNAMIC_RANGE": "Zakres dynamiki", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Wzmocnienie głosu", + "AUDIO_PRESET_SMOOTH": "Płynny", + "AUDIO_PRESET_CUSTOM": "Niestandardowy", + "AUDIO_PARAM_THRESHOLD": "Próg", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", - "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_EQUALIZER": "Korektor", + "AUDIO_COMING_SOON": "Wkrótce" } diff --git a/extension/locales/pt-BR.json b/extension/locales/pt-BR.json index 570efa3..6cfd37d 100644 --- a/extension/locales/pt-BR.json +++ b/extension/locales/pt-BR.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "Tempo limite esgotado — nem todos os participantes carregaram o episódio", "LOBBY_CANCEL_USER": "Cancelado pelo usuário", "NOTIF_ERROR_TITLE": "Erro do KoalaSync", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", + "FOOTER_SUPPORT": "♥ Apoiar", + "FOOTER_REVIEW": "★ Avaliar", + "LABEL_AUDIO_PROCESSING": "Processamento de áudio", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "Aplica efeitos de áudio como compressão à reprodução de vídeo", + "AUDIO_OPEN_SETTINGS": "Abrir configurações de áudio", + "NEW_FEATURE_AUDIO": "Novo: Processamento de áudio — experimente o compressor!", + "AUDIO_PAGE_TITLE": "Configurações de áudio", + "AUDIO_MASTER_TOGGLE": "Processamento de áudio", "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", - "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "AUDIO_COMPRESSOR_ENABLE": "Ativado", + "AUDIO_PRESET": "Predefinição", + "AUDIO_PRESET_RECOMMENDED": "Recomendado", + "AUDIO_PRESET_DYNAMIC_RANGE": "Faixa dinâmica", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Aprimoramento de voz", + "AUDIO_PRESET_SMOOTH": "Suave", + "AUDIO_PRESET_CUSTOM": "Personalizado", + "AUDIO_PARAM_THRESHOLD": "Limiar", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", - "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_EQUALIZER": "Equalizador", + "AUDIO_COMING_SOON": "Em breve" } diff --git a/extension/locales/pt.json b/extension/locales/pt.json index 2ec7e88..3ae9d87 100644 --- a/extension/locales/pt.json +++ b/extension/locales/pt.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "Timeout — nem todos os participantes carregaram o episódio", "LOBBY_CANCEL_USER": "Cancelado pelo utilizador", "NOTIF_ERROR_TITLE": "Erro do KoalaSync", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", + "FOOTER_SUPPORT": "♥ Apoiar", + "FOOTER_REVIEW": "★ Avaliar", + "LABEL_AUDIO_PROCESSING": "Processamento de áudio", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "Aplica efeitos de áudio como compressão à reprodução de vídeo", + "AUDIO_OPEN_SETTINGS": "Abrir configurações de áudio", + "NEW_FEATURE_AUDIO": "Novo: Processamento de áudio — experimente o compressor!", + "AUDIO_PAGE_TITLE": "Configurações de áudio", + "AUDIO_MASTER_TOGGLE": "Processamento de áudio", "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", - "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "AUDIO_COMPRESSOR_ENABLE": "Ativado", + "AUDIO_PRESET": "Predefinição", + "AUDIO_PRESET_RECOMMENDED": "Recomendado", + "AUDIO_PRESET_DYNAMIC_RANGE": "Gama dinâmica", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Melhoria vocal", + "AUDIO_PRESET_SMOOTH": "Suave", + "AUDIO_PRESET_CUSTOM": "Personalizado", + "AUDIO_PARAM_THRESHOLD": "Limiar", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", - "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_EQUALIZER": "Equalizador", + "AUDIO_COMING_SOON": "Em breve" } diff --git a/extension/locales/ru.json b/extension/locales/ru.json index c0dd397..de95430 100644 --- a/extension/locales/ru.json +++ b/extension/locales/ru.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "Время ожидания истекло — не все участники загрузили серию", "LOBBY_CANCEL_USER": "Отменено пользователем", "NOTIF_ERROR_TITLE": "Ошибка KoalaSync", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", - "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", - "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "FOOTER_SUPPORT": "♥ Поддержать", + "FOOTER_REVIEW": "★ Оценить", + "LABEL_AUDIO_PROCESSING": "Обработка звука", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "Применяет аудиоэффекты, такие как сжатие, к воспроизведению видео", + "AUDIO_OPEN_SETTINGS": "Открыть настройки звука", + "NEW_FEATURE_AUDIO": "Новое: Обработка звука — попробуйте компрессор!", + "AUDIO_PAGE_TITLE": "Настройки звука", + "AUDIO_MASTER_TOGGLE": "Обработка звука", + "AUDIO_COMPRESSOR": "Компрессор", + "AUDIO_COMPRESSOR_ENABLE": "Включено", + "AUDIO_PRESET": "Пресет", + "AUDIO_PRESET_RECOMMENDED": "Рекомендуемый", + "AUDIO_PRESET_DYNAMIC_RANGE": "Динамический диапазон", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Улучшение голоса", + "AUDIO_PRESET_SMOOTH": "Плавный", + "AUDIO_PRESET_CUSTOM": "Пользовательский", + "AUDIO_PARAM_THRESHOLD": "Порог", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", - "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_EQUALIZER": "Эквалайзер", + "AUDIO_COMING_SOON": "Скоро" } diff --git a/extension/locales/tr.json b/extension/locales/tr.json index ba8f079..736e204 100644 --- a/extension/locales/tr.json +++ b/extension/locales/tr.json @@ -180,27 +180,27 @@ "LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "Zaman aşımı — tüm bağlantılar bölümü yüklemedi", "LOBBY_CANCEL_USER": "Kullanıcı tarafından iptal edildi", "NOTIF_ERROR_TITLE": "KoalaSync Hatası", - "FOOTER_SUPPORT": "♥ Support", - "FOOTER_REVIEW": "★ Rate us", - "LABEL_AUDIO_PROCESSING": "Audio Processing", - "LABEL_AUDIO_PROCESSING_TOOLTIP": "Apply audio effects like compression to video playback", - "AUDIO_OPEN_SETTINGS": "Open Audio Settings", - "NEW_FEATURE_AUDIO": "New: Audio Processing — try the compressor!", - "AUDIO_PAGE_TITLE": "Audio Settings", - "AUDIO_MASTER_TOGGLE": "Audio Processing", - "AUDIO_COMPRESSOR": "Compressor", - "AUDIO_COMPRESSOR_ENABLE": "Enabled", - "AUDIO_PRESET": "Preset", - "AUDIO_PRESET_RECOMMENDED": "Recommended", - "AUDIO_PRESET_DYNAMIC_RANGE": "Dynamic Range", - "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Vocal Enhancement", - "AUDIO_PRESET_SMOOTH": "Smooth", - "AUDIO_PRESET_CUSTOM": "Custom", - "AUDIO_PARAM_THRESHOLD": "Threshold", + "FOOTER_SUPPORT": "♥ Destekle", + "FOOTER_REVIEW": "★ Değerlendir", + "LABEL_AUDIO_PROCESSING": "Ses işleme", + "LABEL_AUDIO_PROCESSING_TOOLTIP": "Video oynatımına sıkıştırma gibi ses efektleri uygular", + "AUDIO_OPEN_SETTINGS": "Ses ayarlarını aç", + "NEW_FEATURE_AUDIO": "Yeni: Ses işleme — kompresörü deneyin!", + "AUDIO_PAGE_TITLE": "Ses ayarları", + "AUDIO_MASTER_TOGGLE": "Ses işleme", + "AUDIO_COMPRESSOR": "Kompresör", + "AUDIO_COMPRESSOR_ENABLE": "Etkin", + "AUDIO_PRESET": "Ön ayar", + "AUDIO_PRESET_RECOMMENDED": "Önerilen", + "AUDIO_PRESET_DYNAMIC_RANGE": "Dinamik aralık", + "AUDIO_PRESET_VOCAL_ENHANCEMENT": "Ses iyileştirme", + "AUDIO_PRESET_SMOOTH": "Yumuşak", + "AUDIO_PRESET_CUSTOM": "Özel", + "AUDIO_PARAM_THRESHOLD": "Eşik", "AUDIO_PARAM_KNEE": "Knee", "AUDIO_PARAM_RATIO": "Ratio", "AUDIO_PARAM_ATTACK": "Attack", "AUDIO_PARAM_RELEASE": "Release", - "AUDIO_EQUALIZER": "Equalizer", - "AUDIO_COMING_SOON": "Coming soon" + "AUDIO_EQUALIZER": "Ekolayzer", + "AUDIO_COMING_SOON": "Çok yakında" } diff --git a/scripts/test-website-locales.mjs b/scripts/test-website-locales.mjs new file mode 100644 index 0000000..3b069bf --- /dev/null +++ b/scripts/test-website-locales.mjs @@ -0,0 +1,61 @@ +#!/usr/bin/env node + +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const localesDir = path.join(__dirname, '..', 'website', 'locales'); +const enPath = path.join(localesDir, 'en.json'); + +if (!fs.existsSync(enPath)) { + console.error('CRITICAL: website/locales/en.json is missing!'); + process.exit(1); +} + +const enDict = JSON.parse(fs.readFileSync(enPath, 'utf8')); +const enKeys = Object.keys(enDict).sort(); + +const localeFiles = fs.readdirSync(localesDir) + .filter(file => file.endsWith('.json') && file !== 'en.json') + .sort(); + +let hasError = false; + +console.log(`Auditing website i18n locales using ${enKeys.length} baseline keys from en.json...\n`); + +for (const file of localeFiles) { + const filePath = path.join(localesDir, file); + try { + const dict = JSON.parse(fs.readFileSync(filePath, 'utf8')); + const keys = Object.keys(dict).sort(); + + const missingKeys = enKeys.filter(k => !keys.includes(k)); + const extraKeys = keys.filter(k => !enKeys.includes(k)); + + if (missingKeys.length > 0 || extraKeys.length > 0) { + hasError = true; + console.error(`❌ ${file} has inconsistencies:`); + if (missingKeys.length > 0) { + console.error(` Missing keys (${missingKeys.length}):`, missingKeys); + } + if (extraKeys.length > 0) { + console.error(` Extra keys (${extraKeys.length}):`, extraKeys); + } + } else { + console.log(`✓ ${file} is fully consistent (matches all keys).`); + } + } catch (err) { + hasError = true; + console.error(`❌ Failed to parse ${file}:`, err.message); + } +} + +console.log(''); +if (hasError) { + console.error('❌ Website locale consistency check failed! Fix the errors above.'); + process.exit(1); +} else { + console.log('🎉 All website locale files are perfectly synchronized and consistent!'); + process.exit(0); +} diff --git a/scripts/verify-release.mjs b/scripts/verify-release.mjs index 1e65cc2..4a1e716 100644 --- a/scripts/verify-release.mjs +++ b/scripts/verify-release.mjs @@ -20,6 +20,7 @@ const checks = [ ['popup syntax', 'node', ['-c', 'extension/popup.js']], ['background syntax', 'node', ['-c', 'extension/background.js']], ['locale coverage', 'node', ['scripts/test-locales.js']], + ['website locale coverage', 'node', ['scripts/test-website-locales.mjs']], ['lint', 'npm', ['run', 'lint']], ['root production audit', 'npm', ['audit', '--omit=dev']], ['server production audit', 'npm', ['audit', '--omit=dev'], { cwd: path.join(repoRoot, 'server') }], diff --git a/website/assets/NewLogoIcon_64.webp b/website/assets/NewLogoIcon_64.webp index 660ffe28987821948744dafb8543121d3c9924ee..b1f4e43ede2c8f7304360593b419303eb296c0d2 100644 GIT binary patch delta 175 zcmV;g08sye3W5r-j{*uP3wTE6hMStHV6&M5(*b{}TcN{oo+V6*L_a%Yrc!p2D?t#c zOKs7r7~J4m$Dv1=mJaDq77GQQQ>rw7XYD@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_ delta 175 zcmV;g08sye3W5r-j{*uRbh!h)p{C}lShJY|(*b{`0tbHB-=W1lvs8JmTg?5P$6NU| zO#PNrF}c9Ck3x?#EFIFIEEWqqr&MVE&)R*f)BkMkZ`0M?cCguv Play", diff --git a/website/locales/ru.json b/website/locales/ru.json index 22effe7..e5a5dd5 100644 --- a/website/locales/ru.json +++ b/website/locales/ru.json @@ -71,7 +71,7 @@ "COMP_FEAT_5_TELE": "Только поддерживаемые сайты", "COMP_FEAT_6_NAME": "Локализация / Перевод", "COMP_FEAT_6_DESC": "Доступные языки интерфейса и поддержка перевода.", - "COMP_FEAT_6_KOALA": "6 языков (и расширяется)", + "COMP_FEAT_6_KOALA": "13 языков (и расширяется)", "COMP_FEAT_6_TELE": "Только английский", "COMP_FOOTNOTE_1": "Состояние сравнения: май 2026.", "COMP_FOOTNOTE_2": "Официальные цены Teleparty Premium и поддерживаемые сети:", diff --git a/website/www/assets/NewLogoIcon_64.avif b/website/www/assets/NewLogoIcon_64.avif index bb4141929b7587fabfd356d2d75d85e22e59187f..5605168cd73e14fa3081ba9717938eb58d0f6c86 100644 GIT binary patch delta 253 zcmV4xbK?cnQw{0ssI200m>Qferx~lWk;SbP@mx2{;vh{e%QG8bC6?2NOU7 z2(zdG_yT_m^^~l+CmFk=q3b6Y9W_*1woG#AWvaDP0>+<%4H7qv#Zb1uw9Fx6PJmrX zzw4Rm26Pe%55YQ8jG3UvET8JdnR{Z~pOAU^DoZ4gfzi5TD$8uf!&oaWq%(W#PXbg^ zA?qkmVs_eQ!`gE}WJ;?Ag=~%D*rewXv5QlK!5)=ADx5cnQt`0ssI200m;Pferx~l5J#RbP@mx2{;vh{e%QG8bC6>2NOU6 z1hc3C_yT_n0|ZZGd?bfGw+IJVA<34&D>upneQVGt)Aw*^x4@l6FOw=}4OH;u!S%fr z)rB>}^*)AeD%-f=7o`9Fr@U!l!Nv-%BoSeOA)ZPKBNw;P%x5`}s+QQPJ0e|0@oOiBX$=?R^r-;JXdkWGxI|YT0SUV#w0K!dJvhbWNhBsh5F$+*=j_tial|&4&dOCsSJ!@Mm7HQD{)r_-a1-t=# CXll#= diff --git a/website/www/assets/NewLogoIcon_64.webp b/website/www/assets/NewLogoIcon_64.webp index 660ffe28987821948744dafb8543121d3c9924ee..b1f4e43ede2c8f7304360593b419303eb296c0d2 100644 GIT binary patch delta 175 zcmV;g08sye3W5r-j{*uP3wTE6hMStHV6&M5(*b{}TcN{oo+V6*L_a%Yrc!p2D?t#c zOKs7r7~J4m$Dv1=mJaDq77GQQQ>rw7XYD@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_ delta 175 zcmV;g08sye3W5r-j{*uRbh!h)p{C}lShJY|(*b{`0tbHB-=W1lvs8JmTg?5P$6NU| zO#PNrF}c9Ck3x?#EFIFIEEWqqr&MVE&)R*f)BkMkZ`0M?cCguvLokalisierung / Übersetzung Verfügbare Oberflächensprachen und Übersetzungsunterstützung. - ✔ 6 Sprachen (wachsend) + ✔ 13 Sprachen (wachsend)Nur Englisch diff --git a/website/www/es/index.html b/website/www/es/index.html index 9843128..92d4857 100644 --- a/website/www/es/index.html +++ b/website/www/es/index.html @@ -796,7 +796,7 @@ Localización / Traducción Idiomas de interfaz disponibles y soporte de traducción. - ✔ 6 idiomas (y creciendo) + ✔ 13 idiomas (y creciendo)Solo inglés diff --git a/website/www/fr/index.html b/website/www/fr/index.html index 4b6625d..58479ef 100644 --- a/website/www/fr/index.html +++ b/website/www/fr/index.html @@ -796,7 +796,7 @@ Localisation / Traduction Langues d'interface disponibles et support de traduction. - ✔ 6 langues (et plus à venir) + ✔ 13 langues (et plus à venir)Anglais uniquement diff --git a/website/www/index.html b/website/www/index.html index 74ce5dd..e32f58a 100644 --- a/website/www/index.html +++ b/website/www/index.html @@ -796,7 +796,7 @@ Localization / Translation Available interface languages and translation support. - ✔ 6 Languages (and growing) + ✔ 13 Languages (and growing)English only diff --git a/website/www/ko/index.html b/website/www/ko/index.html index 6b79318..82c9f55 100644 --- a/website/www/ko/index.html +++ b/website/www/ko/index.html @@ -127,7 +127,7 @@ "@type": "HowToStep", "position": 2, "name": "방 만들기", - "text": "확장 프로그램 팝업을 열고 '새 방 만들기'를 클릭하세요. 초대 링크가 클rip보드에 자동으로 복사됩니다.", + "text": "확장 프로그램 팝업을 열고 '새 방 만들기'를 클릭하세요. 초대 링크가 클립보드에 자동으로 복사됩니다.", "url": "https://sync.koalastuff.net/#how-it-works" }, { diff --git a/website/www/pt-BR/index.html b/website/www/pt-BR/index.html index 878edd2..3a174ad 100644 --- a/website/www/pt-BR/index.html +++ b/website/www/pt-BR/index.html @@ -796,7 +796,7 @@ Localização / Tradução Idiomas de interface disponíveis e suporte a tradução. - ✔ 6 idiomas (e crescendo) + ✔ 13 idiomas (e crescendo)Apenas inglês diff --git a/website/www/pt/index.html b/website/www/pt/index.html index 21dd8b5..82f059b 100644 --- a/website/www/pt/index.html +++ b/website/www/pt/index.html @@ -303,7 +303,7 @@ Servidor Oficial
-
Link de Invito
+
Link de Convite
@@ -330,7 +330,7 @@
- + @@ -350,7 +350,7 @@
@@ -638,7 +638,7 @@ Porquê KoalaSync?

- Construído para uma sincronizzazione fiável, design focado na privacidade e configuração simples. + Construído para uma sincronização fiável, design focado na privacidade e configuração simples.

@@ -650,7 +650,7 @@ Controlo Total / Sincronização Instantânea -

Um pausa, todos pausam. Um avança, todos seguem. O nosso protocolo di sincronizzazione a duas fases coordena a reprodução em tempo reale em todos os participantes.

+

Um pausa, todos pausam. Um avança, todos seguem. O nosso protocolo de sincronização a duas fases coordena a reprodução em tempo real em todos os participantes.

diff --git a/website/www/ru/index.html b/website/www/ru/index.html index 03d16c5..4eb4d2e 100644 --- a/website/www/ru/index.html +++ b/website/www/ru/index.html @@ -796,7 +796,7 @@ Локализация / Перевод Доступные языки интерфейса и поддержка перевода. - ✔ 6 языков (и расширяется) + ✔ 13 языков (и расширяется)Только английский