11 import json |
11 import json |
12 |
12 |
13 from PyQt6.QtCore import QByteArray, QTimer, QUrl |
13 from PyQt6.QtCore import QByteArray, QTimer, QUrl |
14 from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest |
14 from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest |
15 |
15 |
16 from eric7 import Utilities |
16 from eric7 import EricUtilities |
17 from eric7.EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired |
17 from eric7.EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired |
18 from eric7.EricWidgets import EricMessageBox |
18 from eric7.EricWidgets import EricMessageBox |
19 |
19 |
20 from .TranslationEngine import TranslationEngine |
20 from .TranslationEngine import TranslationEngine |
21 |
21 |
133 if apiKey: |
133 if apiKey: |
134 paramsStr += "&api_key={0}".format(apiKey) |
134 paramsStr += "&api_key={0}".format(apiKey) |
135 paramsStr += "&q=" |
135 paramsStr += "&q=" |
136 params = QByteArray(paramsStr.encode("utf-8")) |
136 params = QByteArray(paramsStr.encode("utf-8")) |
137 encodedText = QByteArray( |
137 encodedText = QByteArray( |
138 Utilities.html_encode(text).encode("utf-8") |
138 EricUtilities.html_encode(text).encode("utf-8") |
139 ).toPercentEncoding() |
139 ).toPercentEncoding() |
140 request = params + encodedText |
140 request = params + encodedText |
141 response, ok = requestObject.post(QUrl(url), request) |
141 response, ok = requestObject.post(QUrl(url), request) |
142 if ok: |
142 if ok: |
143 try: |
143 try: |
144 responseDict = json.loads(response) |
144 responseDict = json.loads(response) |
145 except ValueError: |
145 except ValueError: |
146 return self.tr("LibreTranslate: Invalid response received"), False |
146 return self.tr("LibreTranslate: Invalid response received"), False |
147 |
147 |
148 try: |
148 try: |
149 return Utilities.html_encode(responseDict["translatedText"]), True |
149 return EricUtilities.html_encode(responseDict["translatedText"]), True |
150 except KeyError: |
150 except KeyError: |
151 return self.tr("LibreTranslate: No translation available."), False |
151 return self.tr("LibreTranslate: No translation available."), False |
152 else: |
152 else: |
153 with contextlib.suppress(ValueError, KeyError): |
153 with contextlib.suppress(ValueError, KeyError): |
154 responseDict = json.loads(response) |
154 responseDict = json.loads(response) |