src/eric7/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py

branch
eric7
changeset 10131
4488684d1b7d
parent 9653
e67609152c5e
child 10439
21c28b0f9e41
--- 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)

eric ide

mercurial