--- a/src/eric7/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py Sun Jul 23 19:28:19 2023 +0200 +++ b/src/eric7/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py Mon Jul 24 11:56:29 2023 +0200 @@ -11,8 +11,6 @@ from PyQt6.QtCore import QByteArray, QTimer, QUrl -from eric7 import Utilities - from .TranslationEngine import TranslationEngine @@ -26,7 +24,7 @@ "pro": "https://api.deepl.com/v2/translate", "free": "https://api-free.deepl.com/v2/translate", } - MaxTranslationTextLen = 30 * 1024 + MaxTranslationTextLen = 128 * 1024 def __init__(self, plugin, parent=None): """ @@ -72,8 +70,10 @@ "id", "it", "ja", + "ko", "lt", "lv", + "nb", "nl", "pl", "pt", @@ -117,21 +117,29 @@ if not apiKey: return self.tr("A valid DeepL Pro key is required."), False - params = QByteArray( - "auth_key={0}&source_lang={1}&target_lang={2}&text=".format( - apiKey, originalLanguage.upper(), translationLanguage.upper() - ).encode("utf-8") - ) - encodedText = QByteArray( - Utilities.html_encode(text).encode("utf-8") - ).toPercentEncoding() - request = params + encodedText translatorUrl = ( DeepLEngine.TranslatorUrls["free"] if apiKey.endswith(":fx") else DeepLEngine.TranslatorUrls["pro"] ) - response, ok = requestObject.post(QUrl(translatorUrl), request) + + requestDict = { + "text": [text], + "source_lang": originalLanguage, + "target_lang": translationLanguage, + } + request = QByteArray(json.dumps(requestDict).encode("utf-8")) + + extraHeaders = [ + ( + b"Authorization", + b"DeepL-Auth-Key " + QByteArray(apiKey.encode("utf-8")), + ) + ] + + response, ok = requestObject.post( + QUrl(translatorUrl), request, dataType="json", extraHeaders=extraHeaders + ) if ok: try: responseDict = json.loads(response)