From a627dfbf64f478ef3d487b4cf487c3bed4816a73 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 4 Oct 2025 13:25:17 +0300 Subject: [PATCH] Add new translation keys for file exists and auto-update dialogs Introduces new translation keys for file exists and auto-update dialogs in all supported languages. Updates the settings and main GUI to use these i18n strings instead of hardcoded English text, improving localization and user experience. --- languages/ar.json | 16 +++++++++++++ languages/de.json | 16 +++++++++++++ languages/en.json | 24 +++++++++++++++---- languages/es.json | 21 +++++++++++++--- languages/fr.json | 21 +++++++++++++--- languages/hi.json | 16 +++++++++++++ languages/id.json | 16 +++++++++++++ languages/it.json | 21 +++++++++++++--- languages/ja.json | 21 +++++++++++++--- languages/pl.json | 16 +++++++++++++ languages/pt.json | 22 +++++++++++++---- languages/ru.json | 21 +++++++++++++--- languages/tr.json | 21 +++++++++++++--- languages/zh.json | 21 +++++++++++++--- .../ytsage_dialogs_settings.py | 18 +++++++------- src/gui/ytsage_gui_main.py | 6 ++--- 16 files changed, 255 insertions(+), 42 deletions(-) diff --git a/languages/ar.json b/languages/ar.json index f0cbf3c..f3d0aed 100644 --- a/languages/ar.json +++ b/languages/ar.json @@ -375,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count} محدد" + }, + "file_exists_dialog": { + "title": "الملف موجود بالفعل", + "message": "الملف موجود بالفعل:\n{filename}", + "info": "تم تنزيل هذا الفيديو بالفعل." + }, + "auto_update": { + "last_check_never": "آخر فحص للتحديث: أبداً", + "last_check": "آخر فحص للتحديث: {time}", + "next_check_disabled": "الفحص التالي: معطل", + "next_check_startup": "الفحص التالي: عند بدء التشغيل", + "next_check_overdue": "الفحص التالي: الآن (متأخر)", + "next_check": "الفحص التالي: {time}", + "next_check_error": "الفحص التالي: خطأ في الحساب", + "checking": "🔄 جاري الفحص...", + "check_now": "🔍 التحقق من التحديثات الآن" } } \ No newline at end of file diff --git a/languages/de.json b/languages/de.json index 42ad666..0b9eaf7 100644 --- a/languages/de.json +++ b/languages/de.json @@ -375,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count} ausgewählt" + }, + "file_exists_dialog": { + "title": "Datei existiert bereits", + "message": "Die Datei existiert bereits:\n{filename}", + "info": "Dieses Video wurde bereits heruntergeladen." + }, + "auto_update": { + "last_check_never": "Letzte Aktualisierungsprüfung: Nie", + "last_check": "Letzte Aktualisierungsprüfung: {time}", + "next_check_disabled": "Nächste Prüfung: Deaktiviert", + "next_check_startup": "Nächste Prüfung: Beim Start", + "next_check_overdue": "Nächste Prüfung: Jetzt (überfällig)", + "next_check": "Nächste Prüfung: {time}", + "next_check_error": "Nächste Prüfung: Fehler bei Berechnung", + "checking": "🔄 Prüfen...", + "check_now": "🔍 Jetzt nach Updates suchen" } } \ No newline at end of file diff --git a/languages/en.json b/languages/en.json index ce7b574..6300430 100644 --- a/languages/en.json +++ b/languages/en.json @@ -43,7 +43,6 @@ "will_merge_audio": "Will merge audio", "has_audio": "✓ Has Audio", "audio_only": "Audio Only", - "best_4k": "Best (4K)", "best_2k": "Best (2K)", "high_1080p": "High (1080p)", @@ -59,7 +58,7 @@ "buttons": { "download": "Download", "pause": "Pause", - "resume": "Resume", + "resume": "Resume", "cancel": "Cancel", "browse": "Browse", "clear": "Clear", @@ -96,7 +95,7 @@ "tabs": { "cookies": "Login with Cookies", "custom_command": "Custom Command", - "proxy": "Proxy", + "proxy": "Proxy", "language": "Language" }, "cookies": { @@ -151,7 +150,6 @@ "main_configured": "Main proxy configured", "geo_configured": "Geo proxy configured" }, - "download": { "preparing": "Preparing download...", "starting": "🚀 Starting download...", @@ -349,7 +347,7 @@ "ready": "Ready", "file_exists": "⚠️ File already exists", "video_file_exists": "⚠️ Video file already exists", - "audio_file_exists": "⚠️ Audio file already exists", + "audio_file_exists": "⚠️ Audio file already exists", "subtitle_file_exists": "⚠️ Subtitle file already exists", "cancelling": "Cancelling download..." }, @@ -377,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count} selected" + }, + "file_exists_dialog": { + "title": "File Already Exists", + "message": "The file already exists:\n{filename}", + "info": "This video has already been downloaded." + }, + "auto_update": { + "last_check_never": "Last update check: Never", + "last_check": "Last update check: {time}", + "next_check_disabled": "Next check: Disabled", + "next_check_startup": "Next check: On next startup", + "next_check_overdue": "Next check: Now (overdue)", + "next_check": "Next check: {time}", + "next_check_error": "Next check: Error calculating", + "checking": "🔄 Checking...", + "check_now": "🔍 Check for Updates Now" } } \ No newline at end of file diff --git a/languages/es.json b/languages/es.json index e1b046d..c798011 100644 --- a/languages/es.json +++ b/languages/es.json @@ -28,7 +28,7 @@ "download": "Descargar", "pause": "Pausar", "resume": "Reanudar", - "cancel": "Cancelar", + "cancel": "Cancelar", "browse": "Examinar", "clear": "Limpiar", "ok": "Aceptar", @@ -150,9 +150,8 @@ "will_merge_audio": "Se combinará audio", "has_audio": "✓ Tiene Audio", "audio_only": "Solo Audio", - "best_4k": "Óptima (4K)", - "best_2k": "Óptima (2K)", + "best_2k": "Óptima (2K)", "high_1080p": "Alta (1080p)", "high_720p": "Alta (720p)", "medium_480p": "Media (480p)", @@ -359,5 +358,21 @@ }, "subtitle_selection": { "count_selected": "{count} seleccionados" + }, + "file_exists_dialog": { + "title": "El archivo ya existe", + "message": "El archivo ya existe:\n{filename}", + "info": "Este video ya ha sido descargado." + }, + "auto_update": { + "last_check_never": "Última verificación: Nunca", + "last_check": "Última verificación: {time}", + "next_check_disabled": "Próxima verificación: Deshabilitada", + "next_check_startup": "Próxima verificación: Al iniciar", + "next_check_overdue": "Próxima verificación: Ahora (atrasada)", + "next_check": "Próxima verificación: {time}", + "next_check_error": "Próxima verificación: Error al calcular", + "checking": "🔄 Verificando...", + "check_now": "🔍 Verificar actualizaciones ahora" } } \ No newline at end of file diff --git a/languages/fr.json b/languages/fr.json index 138921e..b6d1512 100644 --- a/languages/fr.json +++ b/languages/fr.json @@ -43,7 +43,6 @@ "will_merge_audio": "L'audio sera fusionné", "has_audio": "✓ Contient de l'audio", "audio_only": "Audio uniquement", - "best_4k": "Meilleure (4K)", "best_2k": "Meilleure (2K)", "high_1080p": "Haute (1080p)", @@ -59,7 +58,7 @@ "buttons": { "download": "Télécharger", "pause": "Pause", - "resume": "Reprendre", + "resume": "Reprendre", "cancel": "Annuler", "browse": "Parcourir", "clear": "Effacer", @@ -96,7 +95,7 @@ "tabs": { "cookies": "Se connecter avec des cookies", "custom_command": "Commande personnalisée", - "proxy": "Proxy", + "proxy": "Proxy", "language": "Langue" }, "cookies": { @@ -376,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count} sélectionné(s)" + }, + "file_exists_dialog": { + "title": "Le fichier existe déjà", + "message": "Le fichier existe déjà :\n{filename}", + "info": "Cette vidéo a déjà été téléchargée." + }, + "auto_update": { + "last_check_never": "Dernière vérification : Jamais", + "last_check": "Dernière vérification : {time}", + "next_check_disabled": "Prochaine vérification : Désactivée", + "next_check_startup": "Prochaine vérification : Au démarrage", + "next_check_overdue": "Prochaine vérification : Maintenant (en retard)", + "next_check": "Prochaine vérification : {time}", + "next_check_error": "Prochaine vérification : Erreur de calcul", + "checking": "🔄 Vérification...", + "check_now": "🔍 Vérifier les mises à jour maintenant" } } \ No newline at end of file diff --git a/languages/hi.json b/languages/hi.json index a9317c4..3ac1595 100644 --- a/languages/hi.json +++ b/languages/hi.json @@ -375,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count} चुना गया" + }, + "file_exists_dialog": { + "title": "फ़ाइल पहले से मौजूद है", + "message": "फ़ाइल पहले से मौजूद है:\n{filename}", + "info": "यह वीडियो पहले ही डाउनलोड किया जा चुका है।" + }, + "auto_update": { + "last_check_never": "अंतिम अपडेट जांच: कभी नहीं", + "last_check": "अंतिम अपडेट जांच: {time}", + "next_check_disabled": "अगली जांच: अक्षम", + "next_check_startup": "अगली जांच: स्टार्टअप पर", + "next_check_overdue": "अगली जांच: अभी (विलंबित)", + "next_check": "अगली जांच: {time}", + "next_check_error": "अगली जांच: गणना त्रुटि", + "checking": "🔄 जांच रहे हैं...", + "check_now": "🔍 अभी अपडेट की जांच करें" } } \ No newline at end of file diff --git a/languages/id.json b/languages/id.json index e9b4834..d5cfb0f 100644 --- a/languages/id.json +++ b/languages/id.json @@ -375,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count} dipilih" + }, + "file_exists_dialog": { + "title": "File Sudah Ada", + "message": "File sudah ada:\n{filename}", + "info": "Video ini sudah pernah diunduh." + }, + "auto_update": { + "last_check_never": "Pemeriksaan terakhir: Tidak pernah", + "last_check": "Pemeriksaan terakhir: {time}", + "next_check_disabled": "Pemeriksaan berikutnya: Dinonaktifkan", + "next_check_startup": "Pemeriksaan berikutnya: Saat startup", + "next_check_overdue": "Pemeriksaan berikutnya: Sekarang (terlambat)", + "next_check": "Pemeriksaan berikutnya: {time}", + "next_check_error": "Pemeriksaan berikutnya: Kesalahan perhitungan", + "checking": "🔄 Memeriksa...", + "check_now": "🔍 Periksa pembaruan sekarang" } } \ No newline at end of file diff --git a/languages/it.json b/languages/it.json index 3e4f528..1bec284 100644 --- a/languages/it.json +++ b/languages/it.json @@ -43,7 +43,6 @@ "will_merge_audio": "L'audio verrà unito", "has_audio": "✓ Contiene audio", "audio_only": "Solo audio", - "best_4k": "Migliore (4K)", "best_2k": "Migliore (2K)", "high_1080p": "Alta (1080p)", @@ -59,7 +58,7 @@ "buttons": { "download": "Scarica", "pause": "Pausa", - "resume": "Riprendi", + "resume": "Riprendi", "cancel": "Annulla", "browse": "Sfoglia", "clear": "Cancella", @@ -96,7 +95,7 @@ "tabs": { "cookies": "Accedi con i cookie", "custom_command": "Comando personalizzato", - "proxy": "Proxy", + "proxy": "Proxy", "language": "Lingua" }, "cookies": { @@ -376,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count} selezionati" + }, + "file_exists_dialog": { + "title": "Il file esiste già", + "message": "Il file esiste già:\n{filename}", + "info": "Questo video è già stato scaricato." + }, + "auto_update": { + "last_check_never": "Ultimo controllo aggiornamenti: Mai", + "last_check": "Ultimo controllo aggiornamenti: {time}", + "next_check_disabled": "Prossimo controllo: Disabilitato", + "next_check_startup": "Prossimo controllo: All'avvio", + "next_check_overdue": "Prossimo controllo: Ora (in ritardo)", + "next_check": "Prossimo controllo: {time}", + "next_check_error": "Prossimo controllo: Errore di calcolo", + "checking": "🔄 Controllo...", + "check_now": "🔍 Controlla aggiornamenti ora" } } \ No newline at end of file diff --git a/languages/ja.json b/languages/ja.json index 75c50cb..c6eb70c 100644 --- a/languages/ja.json +++ b/languages/ja.json @@ -43,7 +43,6 @@ "will_merge_audio": "音声が結合されます", "has_audio": "✓ 音声あり", "audio_only": "音声のみ", - "best_4k": "最高 (4K)", "best_2k": "最高 (2K)", "high_1080p": "高 (1080p)", @@ -59,7 +58,7 @@ "buttons": { "download": "ダウンロード", "pause": "一時停止", - "resume": "再開", + "resume": "再開", "cancel": "キャンセル", "browse": "参照", "clear": "クリア", @@ -96,7 +95,7 @@ "tabs": { "cookies": "Cookieでログイン", "custom_command": "カスタムコマンド", - "proxy": "プロキシ", + "proxy": "プロキシ", "language": "言語" }, "cookies": { @@ -376,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count}個選択" + }, + "file_exists_dialog": { + "title": "ファイルが既に存在します", + "message": "ファイルが既に存在します:\n{filename}", + "info": "この動画は既にダウンロードされています。" + }, + "auto_update": { + "last_check_never": "最終更新確認: なし", + "last_check": "最終更新確認: {time}", + "next_check_disabled": "次回確認: 無効", + "next_check_startup": "次回確認: 起動時", + "next_check_overdue": "次回確認: 今すぐ (遅延)", + "next_check": "次回確認: {time}", + "next_check_error": "次回確認: 計算エラー", + "checking": "🔄 確認中...", + "check_now": "🔍 今すぐ更新を確認" } } \ No newline at end of file diff --git a/languages/pl.json b/languages/pl.json index 2f2c019..c336f0e 100644 --- a/languages/pl.json +++ b/languages/pl.json @@ -375,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count} wybrano" + }, + "file_exists_dialog": { + "title": "Plik już istnieje", + "message": "Plik już istnieje:\n{filename}", + "info": "Ten film został już pobrany." + }, + "auto_update": { + "last_check_never": "Ostatnie sprawdzenie: Nigdy", + "last_check": "Ostatnie sprawdzenie: {time}", + "next_check_disabled": "Następne sprawdzenie: Wyłączone", + "next_check_startup": "Następne sprawdzenie: Przy starcie", + "next_check_overdue": "Następne sprawdzenie: Teraz (zaległe)", + "next_check": "Następne sprawdzenie: {time}", + "next_check_error": "Następne sprawdzenie: Błąd obliczania", + "checking": "🔄 Sprawdzanie...", + "check_now": "🔍 Sprawdź aktualizacje teraz" } } \ No newline at end of file diff --git a/languages/pt.json b/languages/pt.json index 245b3ad..80a3eac 100644 --- a/languages/pt.json +++ b/languages/pt.json @@ -43,7 +43,6 @@ "will_merge_audio": "Irá mesclar áudio", "has_audio": "✓ Tem Áudio", "audio_only": "Apenas Áudio", - "best_4k": "Melhor (4K)", "best_2k": "Melhor (2K)", "high_1080p": "Alta (1080p)", @@ -59,7 +58,7 @@ "buttons": { "download": "Baixar", "pause": "Pausar", - "resume": "Retomar", + "resume": "Retomar", "cancel": "Cancelar", "browse": "Procurar", "clear": "Limpar", @@ -96,7 +95,7 @@ "tabs": { "cookies": "Entrar com Cookies", "custom_command": "Comando Personalizado", - "proxy": "Proxy", + "proxy": "Proxy", "language": "Idioma" }, "cookies": { @@ -151,7 +150,6 @@ "main_configured": "Proxy principal configurado", "geo_configured": "Proxy geográfico configurado" }, - "download": { "preparing": "Preparando download...", "starting": "🚀 Iniciando download...", @@ -377,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count} selecionadas" + }, + "file_exists_dialog": { + "title": "Arquivo já existe", + "message": "O arquivo já existe:\n{filename}", + "info": "Este vídeo já foi baixado." + }, + "auto_update": { + "last_check_never": "Última verificação: Nunca", + "last_check": "Última verificação: {time}", + "next_check_disabled": "Próxima verificação: Desativada", + "next_check_startup": "Próxima verificação: Na inicialização", + "next_check_overdue": "Próxima verificação: Agora (atrasada)", + "next_check": "Próxima verificação: {time}", + "next_check_error": "Próxima verificação: Erro ao calcular", + "checking": "🔄 Verificando...", + "check_now": "🔍 Verificar atualizações agora" } } \ No newline at end of file diff --git a/languages/ru.json b/languages/ru.json index 71e8304..05c790c 100644 --- a/languages/ru.json +++ b/languages/ru.json @@ -43,7 +43,6 @@ "will_merge_audio": "Объединит аудио", "has_audio": "✓ Есть аудио", "audio_only": "Только аудио", - "best_4k": "Лучшее (4K)", "best_2k": "Лучшее (2K)", "high_1080p": "Высокое (1080p)", @@ -59,7 +58,7 @@ "buttons": { "download": "Скачать", "pause": "Пауза", - "resume": "Продолжить", + "resume": "Продолжить", "cancel": "Отмена", "browse": "Обзор", "clear": "Очистить", @@ -96,7 +95,7 @@ "tabs": { "cookies": "Войти через Cookie", "custom_command": "Пользовательская команда", - "proxy": "Прокси", + "proxy": "Прокси", "language": "Язык" }, "cookies": { @@ -376,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "выбрано: {count}" + }, + "file_exists_dialog": { + "title": "Файл уже существует", + "message": "Файл уже существует:\n{filename}", + "info": "Это видео уже было загружено." + }, + "auto_update": { + "last_check_never": "Последняя проверка: Никогда", + "last_check": "Последняя проверка: {time}", + "next_check_disabled": "Следующая проверка: Отключена", + "next_check_startup": "Следующая проверка: При запуске", + "next_check_overdue": "Следующая проверка: Сейчас (просрочено)", + "next_check": "Следующая проверка: {time}", + "next_check_error": "Следующая проверка: Ошибка расчета", + "checking": "🔄 Проверка...", + "check_now": "🔍 Проверить обновления сейчас" } } \ No newline at end of file diff --git a/languages/tr.json b/languages/tr.json index 624466e..9042115 100644 --- a/languages/tr.json +++ b/languages/tr.json @@ -43,7 +43,6 @@ "will_merge_audio": "Ses birleştirilecek", "has_audio": "✓ Ses var", "audio_only": "Sadece ses", - "best_4k": "En iyi (4K)", "best_2k": "En iyi (2K)", "high_1080p": "Yüksek (1080p)", @@ -59,7 +58,7 @@ "buttons": { "download": "İndir", "pause": "Duraklat", - "resume": "Devam Et", + "resume": "Devam Et", "cancel": "İptal", "browse": "Gözat", "clear": "Temizle", @@ -96,7 +95,7 @@ "tabs": { "cookies": "Çerezlerle giriş yap", "custom_command": "Özel komut", - "proxy": "Proxy", + "proxy": "Proxy", "language": "Dil" }, "cookies": { @@ -376,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "{count} seçildi" + }, + "file_exists_dialog": { + "title": "Dosya zaten mevcut", + "message": "Dosya zaten mevcut:\n{filename}", + "info": "Bu video zaten indirilmiş." + }, + "auto_update": { + "last_check_never": "Son güncelleme kontrolü: Hiç", + "last_check": "Son güncelleme kontrolü: {time}", + "next_check_disabled": "Sonraki kontrol: Devre dışı", + "next_check_startup": "Sonraki kontrol: Başlangıçta", + "next_check_overdue": "Sonraki kontrol: Şimdi (gecikmiş)", + "next_check": "Sonraki kontrol: {time}", + "next_check_error": "Sonraki kontrol: Hesaplama hatası", + "checking": "🔄 Kontrol ediliyor...", + "check_now": "🔍 Şimdi güncellemeleri kontrol et" } } \ No newline at end of file diff --git a/languages/zh.json b/languages/zh.json index 3e5aa55..5a6758e 100644 --- a/languages/zh.json +++ b/languages/zh.json @@ -43,7 +43,6 @@ "will_merge_audio": "将合并音频", "has_audio": "✓ 有音频", "audio_only": "仅音频", - "best_4k": "最佳 (4K)", "best_2k": "最佳 (2K)", "high_1080p": "高清 (1080p)", @@ -59,7 +58,7 @@ "buttons": { "download": "下载", "pause": "暂停", - "resume": "恢复", + "resume": "恢复", "cancel": "取消", "browse": "浏览", "clear": "清除", @@ -96,7 +95,7 @@ "tabs": { "cookies": "使用 Cookie 登录", "custom_command": "自定义命令", - "proxy": "代理", + "proxy": "代理", "language": "语言" }, "cookies": { @@ -376,5 +375,21 @@ }, "subtitle_selection": { "count_selected": "已选择{count}个" + }, + "file_exists_dialog": { + "title": "文件已存在", + "message": "文件已存在:\n{filename}", + "info": "该视频已被下载。" + }, + "auto_update": { + "last_check_never": "上次检查更新: 从未", + "last_check": "上次检查更新: {time}", + "next_check_disabled": "下次检查: 已禁用", + "next_check_startup": "下次检查: 启动时", + "next_check_overdue": "下次检查: 现在 (已逾期)", + "next_check": "下次检查: {time}", + "next_check_error": "下次检查: 计算错误", + "checking": "🔄 检查中...", + "check_now": "🔍 立即检查更新" } } \ No newline at end of file diff --git a/src/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py b/src/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py index 958b03e..da24d60 100644 --- a/src/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py +++ b/src/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py @@ -575,9 +575,9 @@ class AutoUpdateSettingsDialog(QDialog): last_check = settings["last_check"] if last_check > 0: last_check_time = datetime.fromtimestamp(last_check).strftime("%Y-%m-%d %H:%M:%S") - self.last_check_label.setText(f"Last update check: {last_check_time}") + self.last_check_label.setText(_("auto_update.last_check", time=last_check_time)) else: - self.last_check_label.setText("Last update check: Never") + self.last_check_label.setText(_("auto_update.last_check_never")) # Calculate next check time self.update_next_check_label() @@ -592,7 +592,7 @@ class AutoUpdateSettingsDialog(QDialog): """Update the next check label based on current settings.""" try: if not self.enable_checkbox.isChecked(): - self.next_check_label.setText("Next check: Disabled") + self.next_check_label.setText(_("auto_update.next_check_disabled")) return settings = get_auto_update_settings() @@ -600,7 +600,7 @@ class AutoUpdateSettingsDialog(QDialog): frequency = self.get_selected_frequency() if last_check == 0: - self.next_check_label.setText("Next check: On next startup") + self.next_check_label.setText(_("auto_update.next_check_startup")) return next_check_time = last_check @@ -613,13 +613,13 @@ class AutoUpdateSettingsDialog(QDialog): current_time = time.time() if next_check_time <= current_time: - self.next_check_label.setText("Next check: Now (overdue)") + self.next_check_label.setText(_("auto_update.next_check_overdue")) else: next_check_datetime = datetime.fromtimestamp(next_check_time) - self.next_check_label.setText(f"Next check: {next_check_datetime.strftime('%Y-%m-%d %H:%M:%S')}") + self.next_check_label.setText(_("auto_update.next_check", time=next_check_datetime.strftime('%Y-%m-%d %H:%M:%S'))) except Exception as e: - self.next_check_label.setText("Next check: Error calculating") + self.next_check_label.setText(_("auto_update.next_check_error")) logger.exception(f"Error calculating next check time: {e}") def on_enable_toggled(self, enabled) -> None: @@ -642,7 +642,7 @@ class AutoUpdateSettingsDialog(QDialog): def manual_check(self) -> None: """Perform a manual update check.""" self.manual_check_btn.setEnabled(False) - self.manual_check_btn.setText("🔄 Checking...") + self.manual_check_btn.setText(_("auto_update.checking")) # Force an immediate update check def check_in_thread() -> None: @@ -696,7 +696,7 @@ class AutoUpdateSettingsDialog(QDialog): def manual_check_finished(self, success) -> None: """Handle completion of manual update check.""" self.manual_check_btn.setEnabled(True) - self.manual_check_btn.setText("🔍 Check for Updates Now") + self.manual_check_btn.setText(_("auto_update.check_now")) if success: msg_box = self._create_styled_message_box( diff --git a/src/gui/ytsage_gui_main.py b/src/gui/ytsage_gui_main.py index f4a745c..0f2270f 100644 --- a/src/gui/ytsage_gui_main.py +++ b/src/gui/ytsage_gui_main.py @@ -1480,9 +1480,9 @@ class YTSageApp(QMainWindow, FormatTableMixin, VideoInfoMixin): # Inherit from # Show a simple message dialog msg_box = QMessageBox() msg_box.setIcon(QMessageBox.Icon.Information) - msg_box.setWindowTitle("File Already Exists") - msg_box.setText(f"The file already exists:\n{filename}") - msg_box.setInformativeText("This video has already been downloaded.") + msg_box.setWindowTitle(_("file_exists_dialog.title")) + msg_box.setText(_("file_exists_dialog.message", filename=filename)) + msg_box.setInformativeText(_("file_exists_dialog.info")) msg_box.setStandardButtons(QMessageBox.StandardButton.Ok) # Set the window icon to match the main application