@@ -516,7 +516,7 @@ def get_display_mapping(self, key: str) -> Optional[Dict[str, str]]:
516516 "OPENAI_API_KEY" : self ._t ("label_OPENAI_API_KEY" ),
517517 "OPENAI_MODEL" : self ._t ("label_OPENAI_MODEL" ),
518518 "OPENAI_API_BASE" : self ._t ("label_OPENAI_API_BASE" ),
519- "OPENAI_HTTP_PROXY" : self ._t ("label_OPENAI_HTTP_PROXY" ),
519+ # "OPENAI_HTTP_PROXY": self._t("label_OPENAI_HTTP_PROXY"), # 已废弃,不在UI中显示
520520 "OPENAI_GLOSSARY_PATH" : self ._t ("label_OPENAI_GLOSSARY_PATH" ),
521521 "DEEPSEEK_API_KEY" : self ._t ("label_DEEPSEEK_API_KEY" ),
522522 "DEEPSEEK_API_BASE" : self ._t ("label_DEEPSEEK_API_BASE" ),
@@ -1241,6 +1241,19 @@ def on_task_finished(self, results):
12411241 try :
12421242 self .state_manager .set_translating (False )
12431243 self .state_manager .set_status_message (f"任务完成,成功处理 { self .saved_files_count } 个文件。" )
1244+
1245+ # 重置主视图的进度条
1246+ if hasattr (self , 'main_view' ) and self .main_view :
1247+ self .main_view .reset_progress ()
1248+
1249+ # 播放系统提示音
1250+ try :
1251+ from PyQt6 .QtWidgets import QApplication
1252+ QApplication .beep ()
1253+ self .logger .info ("播放系统提示音" )
1254+ except Exception as sound_error :
1255+ self .logger .warning (f"播放提示音失败: { sound_error } " )
1256+
12441257 self .task_completed .emit (saved_files )
12451258 except Exception as e :
12461259 self .logger .error (f"完成任务状态更新或信号发射时发生致命错误: { e } " , exc_info = True )
@@ -1265,6 +1278,10 @@ def on_task_error(self, error_message):
12651278 self .state_manager .set_translating (False )
12661279 self .state_manager .set_status_message (f"任务失败: { error_message } " )
12671280
1281+ # 重置主视图的进度条
1282+ if hasattr (self , 'main_view' ) and self .main_view :
1283+ self .main_view .reset_progress ()
1284+
12681285 # 清理线程
12691286 if self .thread and self .thread .isRunning ():
12701287 self .logger .warning ("错误发生但线程仍在运行,请求退出..." )
@@ -1281,6 +1298,10 @@ def on_task_progress(self, current, total, message):
12811298 percentage = (current / total ) * 100 if total > 0 else 0
12821299 self .state_manager .set_translation_progress (percentage )
12831300 self .state_manager .set_status_message (f"[{ current } /{ total } ] { message } " )
1301+
1302+ # 更新主视图的进度条
1303+ if hasattr (self , 'main_view' ) and self .main_view :
1304+ self .main_view .update_progress (current , total , message )
12841305
12851306 def stop_task (self ) -> bool :
12861307 """停止翻译任务(优雅停止,不使用 terminate)"""
@@ -1529,10 +1550,7 @@ def _build_friendly_error_message(self, error_message: str, error_traceback: str
15291550 friendly_msg += "💡 解决方案:\n "
15301551 friendly_msg += " 1. 检查网络连接\n "
15311552 friendly_msg += " - 确认电脑可以正常访问互联网\n \n "
1532- friendly_msg += " 2. 配置代理(如果需要)\n "
1533- friendly_msg += " - 位置:翻译设置 → 环境变量 → OPENAI_HTTP_PROXY\n "
1534- friendly_msg += " - 格式:http://127.0.0.1:7890 或 socks5://127.0.0.1:7890\n \n "
1535- friendly_msg += " 3. 检查API地址是否正确\n "
1553+ friendly_msg += " 2. 检查API地址是否正确\n "
15361554 friendly_msg += " - 位置:翻译设置 → 环境变量 → API_BASE\n "
15371555 friendly_msg += " - 默认值:https://api.openai.com/v1\n \n "
15381556
@@ -1560,9 +1578,7 @@ def _build_friendly_error_message(self, error_message: str, error_traceback: str
15601578 friendly_msg += " - 确认API密钥有访问该服务的权限\n \n "
15611579 friendly_msg += " 2. 检查账户状态\n "
15621580 friendly_msg += " - 确认账户未被封禁或限制\n \n "
1563- friendly_msg += " 3. 配置代理\n "
1564- friendly_msg += " - 某些API在特定地区被限制,需要使用代理\n "
1565- friendly_msg += " - 位置:翻译设置 → 环境变量 → OPENAI_HTTP_PROXY\n \n "
1581+
15661582
15671583 # 检查是否是404未找到错误
15681584 elif "404" in error_message or "not found" in error_message .lower ():
@@ -1718,6 +1734,10 @@ async def _do_processing(self):
17181734 translator_params = self .config_dict .get ('cli' , {})
17191735 translator_params .update (self .config_dict )
17201736
1737+ # 根据 verbose 设置设置日志级别
1738+ verbose = translator_params .get ('verbose' , False )
1739+ if hasattr (self , 'log_service' ) and self .log_service :
1740+ self .log_service .set_console_log_level (verbose )
17211741
17221742 font_filename = self .config_dict .get ('render' , {}).get ('font_path' )
17231743 if font_filename :
0 commit comments