Skip to content

Commit 7c2d764

Browse files
committed
feat: apply system proxy across API workflows
1 parent 5e94d92 commit 7c2d764

21 files changed

Lines changed: 981 additions & 443 deletions

File tree

desktop_qt_ui/app_logic.py

Lines changed: 98 additions & 339 deletions
Large diffs are not rendered by default.

desktop_qt_ui/locales/en_US.json

Lines changed: 36 additions & 2 deletions
Large diffs are not rendered by default.

desktop_qt_ui/locales/es_ES.json

Lines changed: 36 additions & 2 deletions
Large diffs are not rendered by default.

desktop_qt_ui/locales/ja_JP.json

Lines changed: 36 additions & 2 deletions
Large diffs are not rendered by default.

desktop_qt_ui/locales/ko_KR.json

Lines changed: 36 additions & 2 deletions
Large diffs are not rendered by default.

desktop_qt_ui/locales/zh_CN.json

Lines changed: 36 additions & 2 deletions
Large diffs are not rendered by default.

desktop_qt_ui/locales/zh_TW.json

Lines changed: 36 additions & 2 deletions
Large diffs are not rendered by default.

desktop_qt_ui/ui/main_page/env_management.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,7 +1023,7 @@ def _wrap_error_text(message: str, width: int = 60) -> str:
10231023
return "\n".join(wrapped_lines)
10241024

10251025

1026-
def _format_test_connection_error(api_type: str, message: str) -> str:
1026+
def _format_test_connection_error(self, api_type: str, message: str) -> str:
10271027
raw_message = str(message or "").strip()
10281028
analysis_message = raw_message
10291029
for prefix in ("连接失败:", "连接失败:", "api connection failed:", "connection failed:"):
@@ -1089,21 +1089,21 @@ def _format_test_connection_error(api_type: str, message: str) -> str:
10891089
is_service_error = any(keyword in error_lower for keyword in service_keywords)
10901090

10911091
if is_network_error:
1092-
friendly_message = (
1093-
"检测到连接错误、超时或 Host 解析错误。\n"
1094-
"请先检查模型、API 地址和 API 密钥是否正确;如果配置无误,再检查网络连接,并尝试开启 TUN(虚拟网卡模式)。"
1095-
)
1092+
friendly_message = self._t("api_test_error_network")
10961093
elif is_service_error:
1097-
friendly_message = (
1098-
"请先检查模型、API 地址和 API 密钥是否正确。\n"
1099-
"如果配置无误,这也可能是 API 站点、中转渠道或服务端暂时异常,或当前网络链路不稳定;建议稍后重试,或更换 API 站点 / 渠道。"
1100-
)
1094+
friendly_message = self._t("api_test_error_service")
11011095
else:
1102-
friendly_message = "请检查模型、API 地址和 API 密钥是否正确。"
1096+
friendly_message = self._t("api_test_error_config")
11031097

1104-
friendly_message += f"\n\nAPI 地址示例:{_get_api_address_example(api_type)}"
1098+
friendly_message += "\n\n" + self._t(
1099+
"api_test_error_address_example",
1100+
address=_get_api_address_example(api_type),
1101+
)
11051102
if raw_message:
1106-
friendly_message += f"\n\n原始错误:\n{_wrap_error_text(raw_message)}"
1103+
friendly_message += "\n\n" + self._t(
1104+
"api_test_error_raw",
1105+
error=_wrap_error_text(raw_message),
1106+
)
11071107

11081108
return friendly_message
11091109

@@ -1621,7 +1621,7 @@ def on_test_finished(result, error):
16211621
success_details,
16221622
)
16231623
else:
1624-
friendly_message = _format_test_connection_error(test_target, message)
1624+
friendly_message = _format_test_connection_error(self, test_target, message)
16251625
_show_api_error_dialog(
16261626
self._dialog_parent(),
16271627
self._t("Error"),
@@ -1683,7 +1683,7 @@ def on_get_models_finished(result, error):
16831683
else:
16841684
QMessageBox.warning(self._dialog_parent(), self._t("Warning"), self._t("No models available"))
16851685
else:
1686-
friendly_message = _format_test_connection_error(model_api_type, message)
1686+
friendly_message = _format_test_connection_error(self, model_api_type, message)
16871687
_show_api_error_dialog(
16881688
self._dialog_parent(),
16891689
self._t("Error"),

desktop_qt_ui/ui/main_page/pages/about_page.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
remote_url,
1313
set_origin_url,
1414
)
15+
from manga_translator.utils.system_proxy import set_system_proxy_enabled
1516
from PyQt6.QtCore import Qt, QUrl
1617
from PyQt6.QtGui import QDesktopServices, QPixmap
17-
from PyQt6.QtNetwork import QNetworkProxyFactory
1818
from PyQt6.QtWidgets import (
1919
QApplication,
2020
QGridLayout,
@@ -122,7 +122,7 @@ def _on_about_branch_changed(self, index: int):
122122

123123
def _on_about_system_proxy_changed(self, checked: bool):
124124
enabled = bool(checked)
125-
QNetworkProxyFactory.setUseSystemConfiguration(enabled)
125+
set_system_proxy_enabled(enabled)
126126
self.controller.update_single_config("app.use_system_proxy", enabled)
127127

128128

desktop_qt_ui/ui/main_window.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
import os
33
import re
44

5+
from manga_translator.utils.system_proxy import set_system_proxy_enabled
56
from PyQt6.QtCore import QLibraryInfo, QLocale, Qt, QTimer, QTranslator, QUrl, pyqtSlot
67
from PyQt6.QtGui import QAction, QDesktopServices
7-
from PyQt6.QtNetwork import QNetworkProxyFactory
88
from PyQt6.QtWidgets import QApplication
99
from qfluentwidgets import FluentIcon as FIF
1010
from qfluentwidgets import FluentWindow, NavigationItemPosition
@@ -99,9 +99,7 @@ def _setup_logic_and_models(self):
9999
self.config_service = get_config_service()
100100
self.state_manager = get_state_manager()
101101
config = self.config_service.get_config()
102-
QNetworkProxyFactory.setUseSystemConfiguration(
103-
bool(config.app.use_system_proxy)
104-
)
102+
set_system_proxy_enabled(bool(config.app.use_system_proxy))
105103

106104
initial_theme = config.app.theme
107105
if initial_theme == "system":
@@ -185,7 +183,7 @@ def _register_main_interfaces(self):
185183
FIF.LIBRARY,
186184
self._t("Batch Management"),
187185
),
188-
("about", self.main_view.about_page, FIF.INFO, "About Application"),
186+
("about", self.main_view.about_page, FIF.INFO, self._t("About Application")),
189187
]
190188
for key, page, icon, text in pages:
191189
page.setObjectName(f"main_{key}_page")
@@ -885,7 +883,7 @@ def _refresh_navigation_texts(self):
885883
nav_labels = {
886884
"translation": self._t("Translation Interface"),
887885
"settings": self._t("Settings"),
888-
"about": "About Application",
886+
"about": self._t("About Application"),
889887
"env": self._t("API Management"),
890888
"prompts": self._t("Prompt Management"),
891889
"replacements": self._t("Replacement Rules"),

0 commit comments

Comments
 (0)