feat(settings): move update & telemetry controls into Settings → Behavior (#4592)
Relocate the update and telemetry toggles out of the library settings menu into the Behavior (Control) panel, where global app settings live: - New "Update" boxed-list (gated on hasUpdater): Check Updates on Start + Nightly Builds. - New "Privacy" boxed-list: Help improve Readest (telemetry). - Behavior section order: Update → Security → Privacy. - Rename "Nightly Builds (Unstable)" → "Nightly Builds" and drop the "; may be unstable" note (the channel stays off by default). - Updater dialog now shows the full version name (e.g. 0.11.4-2026061506) instead of a parsed date. - Extract + translate the new strings (Update, Privacy, Nightly Builds, Early daily builds) across all 33 locales. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1863,8 +1863,6 @@
|
||||
"Resume audio": "استئناف متابعة الصوت",
|
||||
"Following audio": "يتابع الصوت",
|
||||
" · estimated": " · تقديري",
|
||||
"Nightly Builds (Unstable)": "إصدارات ليلية (غير مستقرة)",
|
||||
"Early daily builds; may be unstable": "إصدارات يومية مبكرة؛ قد تكون غير مستقرة",
|
||||
"Downloading Word Wise data…": "جارٍ تنزيل بيانات Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "إظهار تلميح قصير بلغتك الأم فوق الكلمات الصعبة.",
|
||||
@@ -1881,5 +1879,9 @@
|
||||
"Hint Language": "لغة التلميح",
|
||||
"Data": "البيانات",
|
||||
"Download data packs automatically when needed.": "تنزيل حزم البيانات تلقائيًا عند الحاجة.",
|
||||
"Failed to check for updates": "فشل التحقق من التحديثات"
|
||||
"Failed to check for updates": "فشل التحقق من التحديثات",
|
||||
"Update": "تحديث",
|
||||
"Nightly Builds": "إصدارات ليلية",
|
||||
"Early daily builds": "إصدارات يومية مبكرة",
|
||||
"Privacy": "الخصوصية"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "আবার অনুসরণ করুন",
|
||||
"Following audio": "অডিও অনুসরণ করছে",
|
||||
" · estimated": " · আনুমানিক",
|
||||
"Nightly Builds (Unstable)": "নাইটলি বিল্ড (অস্থিতিশীল)",
|
||||
"Early daily builds; may be unstable": "প্রাথমিক দৈনিক বিল্ড; অস্থিতিশীল হতে পারে",
|
||||
"Downloading Word Wise data…": "Word Wise ডেটা ডাউনলোড হচ্ছে…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "কঠিন শব্দের উপরে মাতৃভাষায় একটি সংক্ষিপ্ত ইঙ্গিত দেখান।",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "ইঙ্গিতের ভাষা",
|
||||
"Data": "ডেটা",
|
||||
"Download data packs automatically when needed.": "প্রয়োজনে স্বয়ংক্রিয়ভাবে ডেটা প্যাক ডাউনলোড করুন।",
|
||||
"Failed to check for updates": "আপডেট পরীক্ষা করতে ব্যর্থ"
|
||||
"Failed to check for updates": "আপডেট পরীক্ষা করতে ব্যর্থ",
|
||||
"Update": "আপডেট",
|
||||
"Nightly Builds": "নাইটলি বিল্ড",
|
||||
"Early daily builds": "প্রাথমিক দৈনিক বিল্ড",
|
||||
"Privacy": "গোপনীয়তা"
|
||||
}
|
||||
|
||||
@@ -1698,8 +1698,6 @@
|
||||
"Resume audio": "རྗེས་འདེད་མུ་མཐུད།",
|
||||
"Following audio": "སྒྲ་གདངས་རྗེས་འདེད་བྱེད་བཞིན་པ།",
|
||||
" · estimated": " · ཚོད་དཔག",
|
||||
"Nightly Builds (Unstable)": "ཉིན་ལྟར་བཟོ་སྐྲུན། (བརྟན་པོ་མིན)",
|
||||
"Early daily builds; may be unstable": "ཉིན་ལྟར་བཟོ་སྐྲུན་སྔ་མོ། བརྟན་པོ་མེད་སྲིད།",
|
||||
"Downloading Word Wise data…": "Word Wise གཞི་གྲངས་ཕབ་ལེན་བྱེད་བཞིན་པ།…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "ཚིག་དཀའ་མོའི་སྟེང་དུ་རང་སྐད་ནང་མཚོན་བྱེད་ཐུང་ངུ་ཞིག་སྟོན།",
|
||||
@@ -1716,5 +1714,9 @@
|
||||
"Hint Language": "མཚོན་བྱེད་སྐད་ཡིག",
|
||||
"Data": "གཞི་གྲངས།",
|
||||
"Download data packs automatically when needed.": "དགོས་མཁོ་བྱུང་སྐབས་གཞི་གྲངས་ཐུམ་སྒྲིལ་རང་འགུལ་གྱིས་ཕབ་ལེན་བྱེད།",
|
||||
"Failed to check for updates": "གསར་སྒྱུར་ཞིབ་བཤེར་མ་ཐུབ།"
|
||||
"Failed to check for updates": "གསར་སྒྱུར་ཞིབ་བཤེར་མ་ཐུབ།",
|
||||
"Update": "གསར་སྒྱུར།",
|
||||
"Nightly Builds": "མཚན་མོའི་བཟོ་སྐྲུན།",
|
||||
"Early daily builds": "སྔ་མོའི་ཉིན་རེའི་བཟོ་སྐྲུན།",
|
||||
"Privacy": "གསང་དོན།"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "Wieder folgen",
|
||||
"Following audio": "Folgt dem Audio",
|
||||
" · estimated": " · geschätzt",
|
||||
"Nightly Builds (Unstable)": "Nightly-Builds (instabil)",
|
||||
"Early daily builds; may be unstable": "Frühe tägliche Builds; können instabil sein",
|
||||
"Downloading Word Wise data…": "Word-Wise-Daten werden heruntergeladen…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Zeigt einen kurzen Hinweis in der Muttersprache über schwierigen Wörtern an.",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "Hinweissprache",
|
||||
"Data": "Daten",
|
||||
"Download data packs automatically when needed.": "Datenpakete bei Bedarf automatisch herunterladen.",
|
||||
"Failed to check for updates": "Suche nach Updates fehlgeschlagen"
|
||||
"Failed to check for updates": "Suche nach Updates fehlgeschlagen",
|
||||
"Update": "Aktualisierung",
|
||||
"Nightly Builds": "Nightly-Builds",
|
||||
"Early daily builds": "Frühe tägliche Builds",
|
||||
"Privacy": "Datenschutz"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "Συνέχιση ήχου",
|
||||
"Following audio": "Ακολουθεί τον ήχο",
|
||||
" · estimated": " · κατ' εκτίμηση",
|
||||
"Nightly Builds (Unstable)": "Νυχτερινές εκδόσεις (ασταθείς)",
|
||||
"Early daily builds; may be unstable": "Πρώιμες ημερήσιες εκδόσεις· ενδέχεται να είναι ασταθείς",
|
||||
"Downloading Word Wise data…": "Λήψη δεδομένων Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Εμφάνιση σύντομης υπόδειξης στη μητρική σας γλώσσα πάνω από δύσκολες λέξεις.",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "Γλώσσα υπόδειξης",
|
||||
"Data": "Δεδομένα",
|
||||
"Download data packs automatically when needed.": "Αυτόματη λήψη πακέτων δεδομένων όταν χρειάζεται.",
|
||||
"Failed to check for updates": "Αποτυχία ελέγχου για ενημερώσεις"
|
||||
"Failed to check for updates": "Αποτυχία ελέγχου για ενημερώσεις",
|
||||
"Update": "Ενημέρωση",
|
||||
"Nightly Builds": "Νυχτερινές εκδόσεις",
|
||||
"Early daily builds": "Πρώιμες καθημερινές εκδόσεις",
|
||||
"Privacy": "Απόρρητο"
|
||||
}
|
||||
|
||||
@@ -1764,8 +1764,6 @@
|
||||
"Resume audio": "Reanudar audio",
|
||||
"Following audio": "Siguiendo el audio",
|
||||
" · estimated": " · estimado",
|
||||
"Nightly Builds (Unstable)": "Versiones nightly (inestables)",
|
||||
"Early daily builds; may be unstable": "Versiones diarias anticipadas; pueden ser inestables",
|
||||
"Downloading Word Wise data…": "Descargando datos de Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Muestra una breve ayuda en tu idioma encima de las palabras difíciles.",
|
||||
@@ -1782,5 +1780,9 @@
|
||||
"Hint Language": "Idioma de las ayudas",
|
||||
"Data": "Datos",
|
||||
"Download data packs automatically when needed.": "Descargar los paquetes de datos automáticamente cuando sea necesario.",
|
||||
"Failed to check for updates": "No se pudo buscar actualizaciones"
|
||||
"Failed to check for updates": "No se pudo buscar actualizaciones",
|
||||
"Update": "Actualización",
|
||||
"Nightly Builds": "Compilaciones nocturnas",
|
||||
"Early daily builds": "Compilaciones diarias anticipadas",
|
||||
"Privacy": "Privacidad"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "ادامهٔ دنبالکردن صدا",
|
||||
"Following audio": "در حال دنبالکردن صدا",
|
||||
" · estimated": " · تخمینی",
|
||||
"Nightly Builds (Unstable)": "نسخههای شبانه (ناپایدار)",
|
||||
"Early daily builds; may be unstable": "نسخههای روزانهٔ اولیه؛ ممکن است ناپایدار باشند",
|
||||
"Downloading Word Wise data…": "در حال دانلود دادههای Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "نمایش راهنمایی کوتاه به زبان مادری بالای واژههای دشوار.",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "زبان راهنمایی",
|
||||
"Data": "داده",
|
||||
"Download data packs automatically when needed.": "دانلود خودکار بستههای داده در صورت نیاز.",
|
||||
"Failed to check for updates": "بررسی بهروزرسانیها ناموفق بود"
|
||||
"Failed to check for updates": "بررسی بهروزرسانیها ناموفق بود",
|
||||
"Update": "بهروزرسانی",
|
||||
"Nightly Builds": "نسخههای شبانه",
|
||||
"Early daily builds": "نسخههای روزانهٔ آزمایشی",
|
||||
"Privacy": "حریم خصوصی"
|
||||
}
|
||||
|
||||
@@ -1764,8 +1764,6 @@
|
||||
"Resume audio": "Reprendre l'audio",
|
||||
"Following audio": "Suit l'audio",
|
||||
" · estimated": " · estimé",
|
||||
"Nightly Builds (Unstable)": "Versions nightly (instables)",
|
||||
"Early daily builds; may be unstable": "Versions quotidiennes anticipées ; peuvent être instables",
|
||||
"Downloading Word Wise data…": "Téléchargement des données Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Affiche une courte explication dans votre langue au-dessus des mots difficiles.",
|
||||
@@ -1782,5 +1780,9 @@
|
||||
"Hint Language": "Langue des explications",
|
||||
"Data": "Données",
|
||||
"Download data packs automatically when needed.": "Télécharger automatiquement les packs de données si nécessaire.",
|
||||
"Failed to check for updates": "Échec de la recherche de mises à jour"
|
||||
"Failed to check for updates": "Échec de la recherche de mises à jour",
|
||||
"Update": "Mise à jour",
|
||||
"Nightly Builds": "Versions nocturnes",
|
||||
"Early daily builds": "Versions quotidiennes anticipées",
|
||||
"Privacy": "Confidentialité"
|
||||
}
|
||||
|
||||
@@ -1764,8 +1764,6 @@
|
||||
"Resume audio": "חידוש מעקב",
|
||||
"Following audio": "עוקב אחר השמע",
|
||||
" · estimated": " · משוער",
|
||||
"Nightly Builds (Unstable)": "גרסאות לילה (לא יציבות)",
|
||||
"Early daily builds; may be unstable": "גרסאות יומיות מוקדמות; עשויות להיות לא יציבות",
|
||||
"Downloading Word Wise data…": "מוריד נתוני Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "הצגת רמז קצר בשפת האם מעל מילים קשות.",
|
||||
@@ -1782,5 +1780,9 @@
|
||||
"Hint Language": "שפת הרמז",
|
||||
"Data": "נתונים",
|
||||
"Download data packs automatically when needed.": "הורדת חבילות נתונים אוטומטית בעת הצורך.",
|
||||
"Failed to check for updates": "בדיקת העדכונים נכשלה"
|
||||
"Failed to check for updates": "בדיקת העדכונים נכשלה",
|
||||
"Update": "עדכון",
|
||||
"Nightly Builds": "גרסאות לילה",
|
||||
"Early daily builds": "גרסאות יומיות מוקדמות",
|
||||
"Privacy": "פרטיות"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "ऑडियो फिर से अनुसरण करें",
|
||||
"Following audio": "ऑडियो का अनुसरण कर रहा है",
|
||||
" · estimated": " · अनुमानित",
|
||||
"Nightly Builds (Unstable)": "नाइटली बिल्ड (अस्थिर)",
|
||||
"Early daily builds; may be unstable": "शुरुआती दैनिक बिल्ड; अस्थिर हो सकते हैं",
|
||||
"Downloading Word Wise data…": "Word Wise डेटा डाउनलोड हो रहा है…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "कठिन शब्दों के ऊपर मातृभाषा में एक संक्षिप्त संकेत दिखाएँ।",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "संकेत भाषा",
|
||||
"Data": "डेटा",
|
||||
"Download data packs automatically when needed.": "ज़रूरत पड़ने पर डेटा पैक स्वतः डाउनलोड करें।",
|
||||
"Failed to check for updates": "अपडेट की जाँच करने में विफल"
|
||||
"Failed to check for updates": "अपडेट की जाँच करने में विफल",
|
||||
"Update": "अपडेट",
|
||||
"Nightly Builds": "नाइटली बिल्ड",
|
||||
"Early daily builds": "प्रारंभिक दैनिक बिल्ड",
|
||||
"Privacy": "गोपनीयता"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "Követés folytatása",
|
||||
"Following audio": "Hangot követi",
|
||||
" · estimated": " · becsült",
|
||||
"Nightly Builds (Unstable)": "Éjszakai buildek (instabil)",
|
||||
"Early daily builds; may be unstable": "Korai napi buildek; instabilak lehetnek",
|
||||
"Downloading Word Wise data…": "Word Wise-adatok letöltése…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Rövid, anyanyelvi tipp megjelenítése a nehéz szavak felett.",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "Tippek nyelve",
|
||||
"Data": "Adatok",
|
||||
"Download data packs automatically when needed.": "Adatcsomagok automatikus letöltése, amikor szükséges.",
|
||||
"Failed to check for updates": "A frissítések keresése sikertelen"
|
||||
"Failed to check for updates": "A frissítések keresése sikertelen",
|
||||
"Update": "Frissítés",
|
||||
"Nightly Builds": "Éjszakai buildek",
|
||||
"Early daily builds": "Korai napi buildek",
|
||||
"Privacy": "Adatvédelem"
|
||||
}
|
||||
|
||||
@@ -1698,8 +1698,6 @@
|
||||
"Resume audio": "Lanjutkan mengikuti",
|
||||
"Following audio": "Mengikuti audio",
|
||||
" · estimated": " · perkiraan",
|
||||
"Nightly Builds (Unstable)": "Build Harian (Tidak Stabil)",
|
||||
"Early daily builds; may be unstable": "Build harian awal; mungkin tidak stabil",
|
||||
"Downloading Word Wise data…": "Mengunduh data Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Tampilkan petunjuk singkat dalam bahasa ibu di atas kata-kata sulit.",
|
||||
@@ -1716,5 +1714,9 @@
|
||||
"Hint Language": "Bahasa Petunjuk",
|
||||
"Data": "Data",
|
||||
"Download data packs automatically when needed.": "Unduh paket data secara otomatis saat diperlukan.",
|
||||
"Failed to check for updates": "Gagal memeriksa pembaruan"
|
||||
"Failed to check for updates": "Gagal memeriksa pembaruan",
|
||||
"Update": "Pembaruan",
|
||||
"Nightly Builds": "Build Nightly",
|
||||
"Early daily builds": "Build harian awal",
|
||||
"Privacy": "Privasi"
|
||||
}
|
||||
|
||||
@@ -1764,8 +1764,6 @@
|
||||
"Resume audio": "Riprendi audio",
|
||||
"Following audio": "Segue l'audio",
|
||||
" · estimated": " · stimato",
|
||||
"Nightly Builds (Unstable)": "Versioni nightly (instabili)",
|
||||
"Early daily builds; may be unstable": "Versioni giornaliere anticipate; potrebbero essere instabili",
|
||||
"Downloading Word Wise data…": "Download dei dati Word Wise in corso…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Mostra un breve suggerimento nella tua lingua sopra le parole difficili.",
|
||||
@@ -1782,5 +1780,9 @@
|
||||
"Hint Language": "Lingua dei suggerimenti",
|
||||
"Data": "Dati",
|
||||
"Download data packs automatically when needed.": "Scarica automaticamente i pacchetti dati quando necessario.",
|
||||
"Failed to check for updates": "Impossibile verificare la presenza di aggiornamenti"
|
||||
"Failed to check for updates": "Impossibile verificare la presenza di aggiornamenti",
|
||||
"Update": "Aggiornamento",
|
||||
"Nightly Builds": "Build notturne",
|
||||
"Early daily builds": "Build giornaliere anticipate",
|
||||
"Privacy": "Privacy"
|
||||
}
|
||||
|
||||
@@ -1698,8 +1698,6 @@
|
||||
"Resume audio": "音声に再追従",
|
||||
"Following audio": "音声に追従中",
|
||||
" · estimated": " · 推定",
|
||||
"Nightly Builds (Unstable)": "ナイトリービルド(不安定版)",
|
||||
"Early daily builds; may be unstable": "毎日配信の先行ビルド。不安定な場合があります",
|
||||
"Downloading Word Wise data…": "Word Wise データをダウンロード中…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "難しい単語の上に母国語の短いヒントを表示します。",
|
||||
@@ -1716,5 +1714,9 @@
|
||||
"Hint Language": "ヒント言語",
|
||||
"Data": "データ",
|
||||
"Download data packs automatically when needed.": "必要に応じてデータパックを自動的にダウンロードします。",
|
||||
"Failed to check for updates": "更新の確認に失敗しました"
|
||||
"Failed to check for updates": "更新の確認に失敗しました",
|
||||
"Update": "アップデート",
|
||||
"Nightly Builds": "ナイトリービルド",
|
||||
"Early daily builds": "毎日の先行ビルド",
|
||||
"Privacy": "プライバシー"
|
||||
}
|
||||
|
||||
@@ -1698,8 +1698,6 @@
|
||||
"Resume audio": "오디오 다시 따라가기",
|
||||
"Following audio": "오디오 따라가는 중",
|
||||
" · estimated": " · 추정",
|
||||
"Nightly Builds (Unstable)": "나이틀리 빌드(불안정)",
|
||||
"Early daily builds; may be unstable": "매일 배포되는 미리보기 빌드로, 불안정할 수 있습니다",
|
||||
"Downloading Word Wise data…": "Word Wise 데이터 다운로드 중…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "어려운 단어 위에 모국어로 된 짧은 힌트를 표시합니다.",
|
||||
@@ -1716,5 +1714,9 @@
|
||||
"Hint Language": "힌트 언어",
|
||||
"Data": "데이터",
|
||||
"Download data packs automatically when needed.": "필요할 때 데이터 팩을 자동으로 다운로드합니다.",
|
||||
"Failed to check for updates": "업데이트 확인에 실패했습니다"
|
||||
"Failed to check for updates": "업데이트 확인에 실패했습니다",
|
||||
"Update": "업데이트",
|
||||
"Nightly Builds": "야간 빌드",
|
||||
"Early daily builds": "매일 제공되는 미리 보기 빌드",
|
||||
"Privacy": "개인정보 보호"
|
||||
}
|
||||
|
||||
@@ -1698,8 +1698,6 @@
|
||||
"Resume audio": "Sambung ikut audio",
|
||||
"Following audio": "Mengikut audio",
|
||||
" · estimated": " · anggaran",
|
||||
"Nightly Builds (Unstable)": "Binaan Harian (Tidak Stabil)",
|
||||
"Early daily builds; may be unstable": "Binaan harian awal; mungkin tidak stabil",
|
||||
"Downloading Word Wise data…": "Memuat turun data Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Tunjukkan petunjuk ringkas dalam bahasa ibunda di atas perkataan sukar.",
|
||||
@@ -1716,5 +1714,9 @@
|
||||
"Hint Language": "Bahasa Petunjuk",
|
||||
"Data": "Data",
|
||||
"Download data packs automatically when needed.": "Muat turun pakej data secara automatik apabila diperlukan.",
|
||||
"Failed to check for updates": "Gagal menyemak kemas kini"
|
||||
"Failed to check for updates": "Gagal menyemak kemas kini",
|
||||
"Update": "Kemas kini",
|
||||
"Nightly Builds": "Binaan Nightly",
|
||||
"Early daily builds": "Binaan harian awal",
|
||||
"Privacy": "Privasi"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "Audio hervatten",
|
||||
"Following audio": "Volgt audio",
|
||||
" · estimated": " · geschat",
|
||||
"Nightly Builds (Unstable)": "Nightly-builds (onstabiel)",
|
||||
"Early daily builds; may be unstable": "Vroege dagelijkse builds; kunnen onstabiel zijn",
|
||||
"Downloading Word Wise data…": "Word Wise-gegevens downloaden…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Toon een korte hint in je moedertaal boven moeilijke woorden.",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "Hinttaal",
|
||||
"Data": "Gegevens",
|
||||
"Download data packs automatically when needed.": "Download gegevenspakketten automatisch wanneer nodig.",
|
||||
"Failed to check for updates": "Controleren op updates mislukt"
|
||||
"Failed to check for updates": "Controleren op updates mislukt",
|
||||
"Update": "Update",
|
||||
"Nightly Builds": "Nightly-builds",
|
||||
"Early daily builds": "Vroege dagelijkse builds",
|
||||
"Privacy": "Privacy"
|
||||
}
|
||||
|
||||
@@ -1797,8 +1797,6 @@
|
||||
"Resume audio": "Wznów podążanie",
|
||||
"Following audio": "Podąża za dźwiękiem",
|
||||
" · estimated": " · szacowane",
|
||||
"Nightly Builds (Unstable)": "Wersje nocne (niestabilne)",
|
||||
"Early daily builds; may be unstable": "Wczesne codzienne wersje; mogą być niestabilne",
|
||||
"Downloading Word Wise data…": "Pobieranie danych Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Pokazuj krótką podpowiedź w języku ojczystym nad trudnymi słowami.",
|
||||
@@ -1815,5 +1813,9 @@
|
||||
"Hint Language": "Język podpowiedzi",
|
||||
"Data": "Dane",
|
||||
"Download data packs automatically when needed.": "Pobieraj pakiety danych automatycznie w razie potrzeby.",
|
||||
"Failed to check for updates": "Nie udało się sprawdzić aktualizacji"
|
||||
"Failed to check for updates": "Nie udało się sprawdzić aktualizacji",
|
||||
"Update": "Aktualizacja",
|
||||
"Nightly Builds": "Kompilacje nocne",
|
||||
"Early daily builds": "Wczesne kompilacje dzienne",
|
||||
"Privacy": "Prywatność"
|
||||
}
|
||||
|
||||
@@ -1764,8 +1764,6 @@
|
||||
"Resume audio": "Retomar áudio",
|
||||
"Following audio": "Seguindo o áudio",
|
||||
" · estimated": " · estimado",
|
||||
"Nightly Builds (Unstable)": "Versões nightly (instáveis)",
|
||||
"Early daily builds; may be unstable": "Versões diárias antecipadas; podem ser instáveis",
|
||||
"Downloading Word Wise data…": "Baixando dados do Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Mostra uma breve dica no seu idioma acima das palavras difíceis.",
|
||||
@@ -1782,5 +1780,9 @@
|
||||
"Hint Language": "Idioma das dicas",
|
||||
"Data": "Dados",
|
||||
"Download data packs automatically when needed.": "Baixar pacotes de dados automaticamente quando necessário.",
|
||||
"Failed to check for updates": "Falha ao verificar atualizações"
|
||||
"Failed to check for updates": "Falha ao verificar atualizações",
|
||||
"Update": "Atualização",
|
||||
"Nightly Builds": "Compilações noturnas",
|
||||
"Early daily builds": "Compilações diárias antecipadas",
|
||||
"Privacy": "Privacidade"
|
||||
}
|
||||
|
||||
@@ -1764,8 +1764,6 @@
|
||||
"Resume audio": "Retomar áudio",
|
||||
"Following audio": "A seguir o áudio",
|
||||
" · estimated": " · estimado",
|
||||
"Nightly Builds (Unstable)": "Versões nightly (instáveis)",
|
||||
"Early daily builds; may be unstable": "Versões diárias antecipadas; podem ser instáveis",
|
||||
"Downloading Word Wise data…": "A transferir dados do Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Mostra uma breve dica na sua língua por cima das palavras difíceis.",
|
||||
@@ -1782,5 +1780,9 @@
|
||||
"Hint Language": "Idioma das dicas",
|
||||
"Data": "Dados",
|
||||
"Download data packs automatically when needed.": "Transferir pacotes de dados automaticamente quando necessário.",
|
||||
"Failed to check for updates": "Falha ao procurar atualizações"
|
||||
"Failed to check for updates": "Falha ao procurar atualizações",
|
||||
"Update": "Atualização",
|
||||
"Nightly Builds": "Compilações noturnas",
|
||||
"Early daily builds": "Compilações diárias antecipadas",
|
||||
"Privacy": "Privacidade"
|
||||
}
|
||||
|
||||
@@ -1764,8 +1764,6 @@
|
||||
"Resume audio": "Reia urmărirea",
|
||||
"Following audio": "Urmărește audio",
|
||||
" · estimated": " · estimat",
|
||||
"Nightly Builds (Unstable)": "Versiuni nightly (instabile)",
|
||||
"Early daily builds; may be unstable": "Versiuni zilnice timpurii; pot fi instabile",
|
||||
"Downloading Word Wise data…": "Se descarcă datele Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Afișează un scurt indiciu în limba maternă deasupra cuvintelor dificile.",
|
||||
@@ -1782,5 +1780,9 @@
|
||||
"Hint Language": "Limba indiciilor",
|
||||
"Data": "Date",
|
||||
"Download data packs automatically when needed.": "Descarcă automat pachetele de date când este necesar.",
|
||||
"Failed to check for updates": "Verificarea actualizărilor a eșuat"
|
||||
"Failed to check for updates": "Verificarea actualizărilor a eșuat",
|
||||
"Update": "Actualizare",
|
||||
"Nightly Builds": "Versiuni nightly",
|
||||
"Early daily builds": "Versiuni zilnice timpurii",
|
||||
"Privacy": "Confidențialitate"
|
||||
}
|
||||
|
||||
@@ -1797,8 +1797,6 @@
|
||||
"Resume audio": "Возобновить слежение",
|
||||
"Following audio": "Следует за аудио",
|
||||
" · estimated": " · примерно",
|
||||
"Nightly Builds (Unstable)": "Ночные сборки (нестабильные)",
|
||||
"Early daily builds; may be unstable": "Ранние ежедневные сборки; могут быть нестабильными",
|
||||
"Downloading Word Wise data…": "Загрузка данных Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Показывать краткую подсказку на родном языке над сложными словами.",
|
||||
@@ -1815,5 +1813,9 @@
|
||||
"Hint Language": "Язык подсказок",
|
||||
"Data": "Данные",
|
||||
"Download data packs automatically when needed.": "Автоматически загружать пакеты данных при необходимости.",
|
||||
"Failed to check for updates": "Не удалось проверить обновления"
|
||||
"Failed to check for updates": "Не удалось проверить обновления",
|
||||
"Update": "Обновление",
|
||||
"Nightly Builds": "Ночные сборки",
|
||||
"Early daily builds": "Ранние ежедневные сборки",
|
||||
"Privacy": "Конфиденциальность"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "නැවත අනුගමනය කරන්න",
|
||||
"Following audio": "ශ්රව්යය අනුගමනය කරයි",
|
||||
" · estimated": " · ඇස්තමේන්තුගත",
|
||||
"Nightly Builds (Unstable)": "රාත්රික නිකුතු (අස්ථිර)",
|
||||
"Early daily builds; may be unstable": "මුල් දෛනික නිකුතු; අස්ථිර විය හැක",
|
||||
"Downloading Word Wise data…": "Word Wise දත්ත බාගත වෙමින්…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "අසීරු වචන ඉහළින් මව්බසින් කෙටි ඉඟියක් පෙන්වන්න.",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "ඉඟි භාෂාව",
|
||||
"Data": "දත්ත",
|
||||
"Download data packs automatically when needed.": "අවශ්ය විට දත්ත පැකේජ ස්වයංක්රීයව බාගන්න.",
|
||||
"Failed to check for updates": "යාවත්කාලීන සඳහා පරීක්ෂා කිරීමට අසමත් විය"
|
||||
"Failed to check for updates": "යාවත්කාලීන සඳහා පරීක්ෂා කිරීමට අසමත් විය",
|
||||
"Update": "යාවත්කාලීන කිරීම",
|
||||
"Nightly Builds": "රාත්රී නිකුතු",
|
||||
"Early daily builds": "මුල් දෛනික නිකුතු",
|
||||
"Privacy": "පෞද්ගලිකත්වය"
|
||||
}
|
||||
|
||||
@@ -1797,8 +1797,6 @@
|
||||
"Resume audio": "Nadaljuj sledenje",
|
||||
"Following audio": "Sledi zvoku",
|
||||
" · estimated": " · ocenjeno",
|
||||
"Nightly Builds (Unstable)": "Nočne različice (nestabilne)",
|
||||
"Early daily builds; may be unstable": "Zgodnje dnevne različice; lahko so nestabilne",
|
||||
"Downloading Word Wise data…": "Prenašanje podatkov Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Nad težkimi besedami prikaži kratek namig v maternem jeziku.",
|
||||
@@ -1815,5 +1813,9 @@
|
||||
"Hint Language": "Jezik namigov",
|
||||
"Data": "Podatki",
|
||||
"Download data packs automatically when needed.": "Samodejno prenesi pakete podatkov, ko je to potrebno.",
|
||||
"Failed to check for updates": "Preverjanje posodobitev ni uspelo"
|
||||
"Failed to check for updates": "Preverjanje posodobitev ni uspelo",
|
||||
"Update": "Posodobitev",
|
||||
"Nightly Builds": "Nočne gradnje",
|
||||
"Early daily builds": "Zgodnje dnevne gradnje",
|
||||
"Privacy": "Zasebnost"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "Återuppta ljud",
|
||||
"Following audio": "Följer ljudet",
|
||||
" · estimated": " · uppskattat",
|
||||
"Nightly Builds (Unstable)": "Nattliga versioner (instabila)",
|
||||
"Early daily builds; may be unstable": "Tidiga dagliga versioner; kan vara instabila",
|
||||
"Downloading Word Wise data…": "Laddar ner Word Wise-data…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Visa en kort ledtråd på ditt modersmål ovanför svåra ord.",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "Språk för ledtrådar",
|
||||
"Data": "Data",
|
||||
"Download data packs automatically when needed.": "Ladda ner datapaket automatiskt vid behov.",
|
||||
"Failed to check for updates": "Det gick inte att söka efter uppdateringar"
|
||||
"Failed to check for updates": "Det gick inte att söka efter uppdateringar",
|
||||
"Update": "Uppdatering",
|
||||
"Nightly Builds": "Nattliga versioner",
|
||||
"Early daily builds": "Tidiga dagliga versioner",
|
||||
"Privacy": "Integritet"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "மீண்டும் பின்தொடர்",
|
||||
"Following audio": "ஆடியோவைப் பின்தொடர்கிறது",
|
||||
" · estimated": " · தோராயமாக",
|
||||
"Nightly Builds (Unstable)": "நைட்லி பதிப்புகள் (நிலையற்றவை)",
|
||||
"Early daily builds; may be unstable": "ஆரம்ப தினசரி பதிப்புகள்; நிலையற்றதாக இருக்கலாம்",
|
||||
"Downloading Word Wise data…": "Word Wise தரவு பதிவிறக்கப்படுகிறது…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "கடினமான சொற்களுக்கு மேல் தாய்மொழியில் ஒரு சிறிய குறிப்பைக் காட்டு.",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "குறிப்பு மொழி",
|
||||
"Data": "தரவு",
|
||||
"Download data packs automatically when needed.": "தேவைப்படும்போது தரவுத் தொகுப்புகளைத் தானாகப் பதிவிறக்கு.",
|
||||
"Failed to check for updates": "புதுப்பிப்புகளைச் சரிபார்க்க முடியவில்லை"
|
||||
"Failed to check for updates": "புதுப்பிப்புகளைச் சரிபார்க்க முடியவில்லை",
|
||||
"Update": "புதுப்பிப்பு",
|
||||
"Nightly Builds": "இரவு உருவாக்கங்கள்",
|
||||
"Early daily builds": "ஆரம்ப தினசரி உருவாக்கங்கள்",
|
||||
"Privacy": "தனியுரிமை"
|
||||
}
|
||||
|
||||
@@ -1698,8 +1698,6 @@
|
||||
"Resume audio": "ติดตามเสียงต่อ",
|
||||
"Following audio": "กำลังติดตามเสียง",
|
||||
" · estimated": " · โดยประมาณ",
|
||||
"Nightly Builds (Unstable)": "รุ่นทดสอบรายวัน (ไม่เสถียร)",
|
||||
"Early daily builds; may be unstable": "รุ่นทดสอบรายวันช่วงแรก อาจไม่เสถียร",
|
||||
"Downloading Word Wise data…": "กำลังดาวน์โหลดข้อมูล Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "แสดงคำใบ้สั้น ๆ ในภาษาแม่เหนือคำที่ยาก",
|
||||
@@ -1716,5 +1714,9 @@
|
||||
"Hint Language": "ภาษาของคำใบ้",
|
||||
"Data": "ข้อมูล",
|
||||
"Download data packs automatically when needed.": "ดาวน์โหลดชุดข้อมูลโดยอัตโนมัติเมื่อจำเป็น",
|
||||
"Failed to check for updates": "ตรวจหาอัปเดตไม่สำเร็จ"
|
||||
"Failed to check for updates": "ตรวจหาอัปเดตไม่สำเร็จ",
|
||||
"Update": "อัปเดต",
|
||||
"Nightly Builds": "บิลด์รายคืน",
|
||||
"Early daily builds": "บิลด์รายวันรุ่นแรก",
|
||||
"Privacy": "ความเป็นส่วนตัว"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "Sesi takibe devam et",
|
||||
"Following audio": "Sesi takip ediyor",
|
||||
" · estimated": " · tahmini",
|
||||
"Nightly Builds (Unstable)": "Gecelik Sürümler (Kararsız)",
|
||||
"Early daily builds; may be unstable": "Erken günlük sürümler; kararsız olabilir",
|
||||
"Downloading Word Wise data…": "Word Wise verileri indiriliyor…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Zor sözcüklerin üzerinde ana dilde kısa bir ipucu göster.",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "İpucu Dili",
|
||||
"Data": "Veri",
|
||||
"Download data packs automatically when needed.": "Gerektiğinde veri paketlerini otomatik olarak indir.",
|
||||
"Failed to check for updates": "Güncellemeler denetlenemedi"
|
||||
"Failed to check for updates": "Güncellemeler denetlenemedi",
|
||||
"Update": "Güncelleme",
|
||||
"Nightly Builds": "Gecelik sürümler",
|
||||
"Early daily builds": "Erken günlük sürümler",
|
||||
"Privacy": "Gizlilik"
|
||||
}
|
||||
|
||||
@@ -1797,8 +1797,6 @@
|
||||
"Resume audio": "Відновити стеження",
|
||||
"Following audio": "Стежить за аудіо",
|
||||
" · estimated": " · приблизно",
|
||||
"Nightly Builds (Unstable)": "Нічні збірки (нестабільні)",
|
||||
"Early daily builds; may be unstable": "Ранні щоденні збірки; можуть бути нестабільними",
|
||||
"Downloading Word Wise data…": "Завантаження даних Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Показувати коротку підказку рідною мовою над складними словами.",
|
||||
@@ -1815,5 +1813,9 @@
|
||||
"Hint Language": "Мова підказок",
|
||||
"Data": "Дані",
|
||||
"Download data packs automatically when needed.": "Автоматично завантажувати пакети даних за потреби.",
|
||||
"Failed to check for updates": "Не вдалося перевірити оновлення"
|
||||
"Failed to check for updates": "Не вдалося перевірити оновлення",
|
||||
"Update": "Оновлення",
|
||||
"Nightly Builds": "Нічні збірки",
|
||||
"Early daily builds": "Ранні щоденні збірки",
|
||||
"Privacy": "Конфіденційність"
|
||||
}
|
||||
|
||||
@@ -1731,8 +1731,6 @@
|
||||
"Resume audio": "Ergashishni davom ettirish",
|
||||
"Following audio": "Audioga ergashmoqda",
|
||||
" · estimated": " · taxminiy",
|
||||
"Nightly Builds (Unstable)": "Tungi yig'malar (Beqaror)",
|
||||
"Early daily builds; may be unstable": "Erta kunlik yig'malar; beqaror bo'lishi mumkin",
|
||||
"Downloading Word Wise data…": "Word Wise ma'lumotlari yuklab olinmoqda…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Qiyin so'zlar ustida ona tilida qisqa maslahat ko'rsatish.",
|
||||
@@ -1749,5 +1747,9 @@
|
||||
"Hint Language": "Maslahat tili",
|
||||
"Data": "Ma'lumotlar",
|
||||
"Download data packs automatically when needed.": "Kerak bo'lganda ma'lumotlar to'plamlarini avtomatik yuklab olish.",
|
||||
"Failed to check for updates": "Yangilanishlarni tekshirib bo'lmadi"
|
||||
"Failed to check for updates": "Yangilanishlarni tekshirib bo'lmadi",
|
||||
"Update": "Yangilanish",
|
||||
"Nightly Builds": "Tungi buildlar",
|
||||
"Early daily builds": "Erta kunlik buildlar",
|
||||
"Privacy": "Maxfiylik"
|
||||
}
|
||||
|
||||
@@ -1698,8 +1698,6 @@
|
||||
"Resume audio": "Tiếp tục theo âm thanh",
|
||||
"Following audio": "Đang theo âm thanh",
|
||||
" · estimated": " · ước tính",
|
||||
"Nightly Builds (Unstable)": "Bản dựng hằng đêm (Không ổn định)",
|
||||
"Early daily builds; may be unstable": "Bản dựng hằng ngày sớm; có thể không ổn định",
|
||||
"Downloading Word Wise data…": "Đang tải dữ liệu Word Wise…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "Hiển thị gợi ý ngắn bằng tiếng mẹ đẻ phía trên các từ khó.",
|
||||
@@ -1716,5 +1714,9 @@
|
||||
"Hint Language": "Ngôn ngữ gợi ý",
|
||||
"Data": "Dữ liệu",
|
||||
"Download data packs automatically when needed.": "Tự động tải gói dữ liệu khi cần.",
|
||||
"Failed to check for updates": "Không kiểm tra được bản cập nhật"
|
||||
"Failed to check for updates": "Không kiểm tra được bản cập nhật",
|
||||
"Update": "Cập nhật",
|
||||
"Nightly Builds": "Bản dựng hằng đêm",
|
||||
"Early daily builds": "Bản dựng hằng ngày sớm",
|
||||
"Privacy": "Quyền riêng tư"
|
||||
}
|
||||
|
||||
@@ -1698,8 +1698,6 @@
|
||||
"Resume audio": "恢复跟随",
|
||||
"Following audio": "正在跟随音频",
|
||||
" · estimated": " · 估算",
|
||||
"Nightly Builds (Unstable)": "每夜构建版(不稳定)",
|
||||
"Early daily builds; may be unstable": "每日抢先构建,可能不稳定",
|
||||
"Downloading Word Wise data…": "正在下载 Word Wise 数据…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "在生词上方显示简短的母语提示。",
|
||||
@@ -1716,5 +1714,9 @@
|
||||
"Hint Language": "提示语言",
|
||||
"Data": "数据",
|
||||
"Download data packs automatically when needed.": "需要时自动下载数据包。",
|
||||
"Failed to check for updates": "检查更新失败"
|
||||
"Failed to check for updates": "检查更新失败",
|
||||
"Update": "更新",
|
||||
"Nightly Builds": "每夜构建版",
|
||||
"Early daily builds": "每日抢先构建版",
|
||||
"Privacy": "隐私"
|
||||
}
|
||||
|
||||
@@ -1698,8 +1698,6 @@
|
||||
"Resume audio": "恢復跟隨",
|
||||
"Following audio": "正在跟隨音訊",
|
||||
" · estimated": " · 估算",
|
||||
"Nightly Builds (Unstable)": "每夜建置版(不穩定)",
|
||||
"Early daily builds; may be unstable": "每日搶先建置,可能不穩定",
|
||||
"Downloading Word Wise data…": "正在下載 Word Wise 資料…",
|
||||
"Word Wise": "Word Wise",
|
||||
"Show a short native-language hint above difficult words.": "在生難字上方顯示簡短的母語提示。",
|
||||
@@ -1716,5 +1714,9 @@
|
||||
"Hint Language": "提示語言",
|
||||
"Data": "資料",
|
||||
"Download data packs automatically when needed.": "需要時自動下載資料包。",
|
||||
"Failed to check for updates": "檢查更新失敗"
|
||||
"Failed to check for updates": "檢查更新失敗",
|
||||
"Update": "更新",
|
||||
"Nightly Builds": "每夜建置版",
|
||||
"Early daily builds": "每日搶先建置版",
|
||||
"Privacy": "隱私"
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import { useResponsiveSize } from '@/hooks/useResponsiveSize';
|
||||
import { useTransferQueue } from '@/hooks/useTransferQueue';
|
||||
import { navigateToLogin, navigateToProfile } from '@/utils/nav';
|
||||
import { tauriHandleSetAlwaysOnTop, tauriHandleToggleFullScreen } from '@/utils/window';
|
||||
import { optInTelemetry, optOutTelemetry } from '@/utils/telemetry';
|
||||
import { setAboutDialogVisible } from '@/components/AboutWindow';
|
||||
import { setMigrateDataDirDialogVisible } from '@/app/library/components/MigrateDataWindow';
|
||||
import { requestStoragePermission } from '@/utils/permission';
|
||||
@@ -54,15 +53,12 @@ const SettingsMenu: React.FC<SettingsMenuProps> = ({ onPullLibrary, setIsDropdow
|
||||
const { themeMode, setThemeMode } = useThemeStore();
|
||||
const { settings, setSettingsDialogOpen } = useSettingsStore();
|
||||
const [isAutoUpload, setIsAutoUpload] = useState(settings.autoUpload);
|
||||
const [isAutoCheckUpdates, setIsAutoCheckUpdates] = useState(settings.autoCheckUpdates);
|
||||
const [isNightlyChannel, setIsNightlyChannel] = useState(settings.updateChannel === 'nightly');
|
||||
const [isAlwaysOnTop, setIsAlwaysOnTop] = useState(settings.alwaysOnTop);
|
||||
const [isAlwaysShowStatusBar, setIsAlwaysShowStatusBar] = useState(settings.alwaysShowStatusBar);
|
||||
const [isOpenLastBooks, setIsOpenLastBooks] = useState(settings.openLastBooks);
|
||||
const [isAutoImportBooksOnOpen, setIsAutoImportBooksOnOpen] = useState(
|
||||
settings.autoImportBooksOnOpen,
|
||||
);
|
||||
const [isTelemetryEnabled, setIsTelemetryEnabled] = useState(settings.telemetryEnabled);
|
||||
const [alwaysInForeground, setAlwaysInForeground] = useState(settings.alwaysInForeground);
|
||||
const [savedBookCoverForLockScreen, setSavedBookCoverForLockScreen] = useState(
|
||||
settings.savedBookCoverForLockScreen || '',
|
||||
@@ -156,35 +152,12 @@ const SettingsMenu: React.FC<SettingsMenuProps> = ({ onPullLibrary, setIsDropdow
|
||||
setIsAutoImportBooksOnOpen(newValue);
|
||||
};
|
||||
|
||||
const toggleAutoCheckUpdates = () => {
|
||||
const newValue = !settings.autoCheckUpdates;
|
||||
saveSysSettings(envConfig, 'autoCheckUpdates', newValue);
|
||||
setIsAutoCheckUpdates(newValue);
|
||||
};
|
||||
|
||||
const toggleNightlyChannel = () => {
|
||||
const newValue = !isNightlyChannel;
|
||||
saveSysSettings(envConfig, 'updateChannel', newValue ? 'nightly' : 'stable');
|
||||
setIsNightlyChannel(newValue);
|
||||
};
|
||||
|
||||
const toggleOpenLastBooks = () => {
|
||||
const newValue = !settings.openLastBooks;
|
||||
saveSysSettings(envConfig, 'openLastBooks', newValue);
|
||||
setIsOpenLastBooks(newValue);
|
||||
};
|
||||
|
||||
const toggleTelemetry = () => {
|
||||
const newValue = !settings.telemetryEnabled;
|
||||
saveSysSettings(envConfig, 'telemetryEnabled', newValue);
|
||||
setIsTelemetryEnabled(newValue);
|
||||
if (newValue) {
|
||||
optInTelemetry();
|
||||
} else {
|
||||
optOutTelemetry();
|
||||
}
|
||||
};
|
||||
|
||||
const handleUpgrade = () => {
|
||||
navigateToProfile(router);
|
||||
setIsDropdownOpen?.(false);
|
||||
@@ -392,21 +365,6 @@ const SettingsMenu: React.FC<SettingsMenuProps> = ({ onPullLibrary, setIsDropdow
|
||||
onClick={toggleOpenLastBooks}
|
||||
/>
|
||||
)}
|
||||
{appService?.hasUpdater && (
|
||||
<MenuItem
|
||||
label={_('Check Updates on Start')}
|
||||
toggled={isAutoCheckUpdates}
|
||||
onClick={toggleAutoCheckUpdates}
|
||||
/>
|
||||
)}
|
||||
{appService?.hasUpdater && (
|
||||
<MenuItem
|
||||
label={_('Nightly Builds (Unstable)')}
|
||||
description={isNightlyChannel ? _('Early daily builds; may be unstable') : ''}
|
||||
toggled={isNightlyChannel}
|
||||
onClick={toggleNightlyChannel}
|
||||
/>
|
||||
)}
|
||||
<hr aria-hidden='true' className='border-base-200 my-1' />
|
||||
{appService?.hasWindow && (
|
||||
<MenuItem
|
||||
@@ -486,12 +444,6 @@ const SettingsMenu: React.FC<SettingsMenuProps> = ({ onPullLibrary, setIsDropdow
|
||||
)}
|
||||
{isWebAppPlatform() && <MenuItem label={_('Download Readest')} onClick={downloadReadest} />}
|
||||
<MenuItem label={_('About Readest')} onClick={showAboutReadest} />
|
||||
<MenuItem
|
||||
label={_('Help improve Readest')}
|
||||
description={isTelemetryEnabled ? _('Sharing anonymized statistics') : ''}
|
||||
toggled={isTelemetryEnabled}
|
||||
onClick={toggleTelemetry}
|
||||
/>
|
||||
</Menu>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -77,17 +77,6 @@ const TAURI_UPDATER_KEYS = new Set([
|
||||
'windows-aarch64',
|
||||
]);
|
||||
|
||||
// Render a nightly stamp (e.g. "0.11.4-2026061406") in a human form. Returns
|
||||
// the input unchanged for plain semver versions so stable releases display
|
||||
// normally.
|
||||
const formatVersionLabel = (v: string): string => {
|
||||
const m = v.match(/^(\d+\.\d+\.\d+)-(\d{4})(\d{2})(\d{2})(\d{2})$/);
|
||||
if (!m) return v;
|
||||
const [, base, y, mo, d, h] = m;
|
||||
const date = new Date(Number(y), Number(mo) - 1, Number(d));
|
||||
return `Nightly · ${base} (${date.toLocaleDateString()}, ${h}:00)`;
|
||||
};
|
||||
|
||||
export const UpdaterContent = ({
|
||||
latestVersion,
|
||||
lastVersion,
|
||||
@@ -557,7 +546,7 @@ export const UpdaterContent = ({
|
||||
</h2>
|
||||
<p className='mb-2'>
|
||||
{_('Readest {{newVersion}} is available (installed version {{currentVersion}}).', {
|
||||
newVersion: formatVersionLabel(newVersion),
|
||||
newVersion,
|
||||
currentVersion,
|
||||
})}
|
||||
</p>
|
||||
|
||||
@@ -23,6 +23,7 @@ import PageTurnerSettings from './PageTurnerSettings';
|
||||
import AnnotationToolbarCustomizer from './AnnotationToolbarCustomizer';
|
||||
import { DEFAULT_ANNOTATION_TOOLBAR_ITEMS } from '@/utils/annotationToolbar';
|
||||
import { canShareText } from '@/utils/share';
|
||||
import { optInTelemetry, optOutTelemetry } from '@/utils/telemetry';
|
||||
|
||||
const ControlPanel: React.FC<SettingsPanelPanelProp> = ({ bookKey, onRegisterReset }) => {
|
||||
const _ = useTranslation();
|
||||
@@ -63,6 +64,9 @@ const ControlPanel: React.FC<SettingsPanelPanelProp> = ({ bookKey, onRegisterRes
|
||||
);
|
||||
const [screenWakeLock, setScreenWakeLock] = useState(settings.screenWakeLock);
|
||||
const [allowScript, setAllowScript] = useState(viewSettings.allowScript);
|
||||
const [isAutoCheckUpdates, setIsAutoCheckUpdates] = useState(settings.autoCheckUpdates);
|
||||
const [isNightlyChannel, setIsNightlyChannel] = useState(settings.updateChannel === 'nightly');
|
||||
const [isTelemetryEnabled, setIsTelemetryEnabled] = useState(settings.telemetryEnabled);
|
||||
|
||||
const resetToDefaults = useResetViewSettings();
|
||||
const pageTurnerResetRef = useRef<() => void>(() => {});
|
||||
@@ -250,6 +254,29 @@ const ControlPanel: React.FC<SettingsPanelPanelProp> = ({ bookKey, onRegisterRes
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [copyToNotebook]);
|
||||
|
||||
const toggleAutoCheckUpdates = () => {
|
||||
const newValue = !isAutoCheckUpdates;
|
||||
saveSysSettings(envConfig, 'autoCheckUpdates', newValue);
|
||||
setIsAutoCheckUpdates(newValue);
|
||||
};
|
||||
|
||||
const toggleNightlyChannel = () => {
|
||||
const newValue = !isNightlyChannel;
|
||||
saveSysSettings(envConfig, 'updateChannel', newValue ? 'nightly' : 'stable');
|
||||
setIsNightlyChannel(newValue);
|
||||
};
|
||||
|
||||
const toggleTelemetry = () => {
|
||||
const newValue = !isTelemetryEnabled;
|
||||
saveSysSettings(envConfig, 'telemetryEnabled', newValue);
|
||||
setIsTelemetryEnabled(newValue);
|
||||
if (newValue) {
|
||||
optInTelemetry();
|
||||
} else {
|
||||
optOutTelemetry();
|
||||
}
|
||||
};
|
||||
|
||||
const getQuickActionOptions = () => {
|
||||
return [
|
||||
{
|
||||
@@ -443,6 +470,23 @@ const ControlPanel: React.FC<SettingsPanelPanelProp> = ({ bookKey, onRegisterRes
|
||||
/>
|
||||
</BoxedList>
|
||||
|
||||
{appService?.hasUpdater && (
|
||||
<BoxedList title={_('Update')} data-setting-id='settings.control.checkUpdates'>
|
||||
<SettingsSwitchRow
|
||||
label={_('Check Updates on Start')}
|
||||
checked={isAutoCheckUpdates}
|
||||
onChange={toggleAutoCheckUpdates}
|
||||
/>
|
||||
<SettingsSwitchRow
|
||||
label={_('Nightly Builds')}
|
||||
description={isNightlyChannel ? _('Early daily builds') : ''}
|
||||
checked={isNightlyChannel}
|
||||
onChange={toggleNightlyChannel}
|
||||
data-setting-id='settings.control.nightlyChannel'
|
||||
/>
|
||||
</BoxedList>
|
||||
)}
|
||||
|
||||
<BoxedList title={_('Security')} data-setting-id='settings.control.allowJavascript'>
|
||||
<SettingsSwitchRow
|
||||
label={_('Allow JavaScript')}
|
||||
@@ -452,6 +496,15 @@ const ControlPanel: React.FC<SettingsPanelPanelProp> = ({ bookKey, onRegisterRes
|
||||
onChange={() => setAllowScript(!allowScript)}
|
||||
/>
|
||||
</BoxedList>
|
||||
|
||||
<BoxedList title={_('Privacy')} data-setting-id='settings.control.telemetry'>
|
||||
<SettingsSwitchRow
|
||||
label={_('Help improve Readest')}
|
||||
description={isTelemetryEnabled ? _('Sharing anonymized statistics') : ''}
|
||||
checked={isTelemetryEnabled}
|
||||
onChange={toggleTelemetry}
|
||||
/>
|
||||
</BoxedList>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user