eric7/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/MicrosoftEngine.py

Mon, 13 Jun 2022 16:39:53 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 13 Jun 2022 16:39:53 +0200
branch
eric7
changeset 9148
b31f0d894b55
parent 8881
54e42bc2437a
permissions
-rw-r--r--

Translator
- removed the interface to Glosbe as they don't provide an API anymore
- removed the interface to PROMT as they don't provide a free API anymore
- upgraded the interfaces to the Google V2 and Microsoft translators

6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
3 # Copyright (c) 2014 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the Microsoft translation engine.
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
10 import json
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
11
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
12 from PyQt6.QtCore import QUrl, QByteArray, QTimer
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from .TranslationEngine import TranslationEngine
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 class MicrosoftEngine(TranslationEngine):
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 Class implementing the translation engine for the Microsoft
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 translation service.
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
22 TranslatorUrl = (
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
23 "https://api.cognitive.microsofttranslator.com/translate"
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
24 "?api-version=3.0"
7256
4ef3b78ebb4e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
25 )
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 def __init__(self, plugin, parent=None):
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 Constructor
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
31 @param plugin reference to the plugin object
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
32 @type TranslatorPlugin
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
33 @param parent reference to the parent object
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
34 @type QObject
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
36 super().__init__(plugin, parent)
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.__mappings = {
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 "zh-CN": "zh-CHS",
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 "zh-TW": "zh-CHT",
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 }
6412
d71b094845e7 Translator: improved the translator by making the loading of available translations an asynchroneous operation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
42
d71b094845e7 Translator: improved the translator by making the loading of available translations an asynchroneous operation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
43 QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 def engineName(self):
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 Public method to return the name of the engine.
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
49 @return engine name
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
50 @rtype str
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 return "microsoft"
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 def supportedLanguages(self):
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 Public method to get the supported languages.
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
58 @return list of supported language codes
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
59 @rtype list of str
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 return ["ar", "bg", "ca", "cs", "da", "de", "en",
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 "es", "et", "fi", "fr", "hi", "hu", "id",
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 "it", "ja", "ko", "lt", "lv", "mt",
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 "nl", "no", "pl", "pt", "ro", "ru", "sk", "sl",
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 "sv", "th", "tr", "uk", "vi", "zh-CN", "zh-TW",
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 ]
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 def __mapLanguageCode(self, code):
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 Private method to map a language code to the Microsoft code.
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
72 @param code language code
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
73 @type str
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
74 @return mapped language code
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
75 @rtype str
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 if code in self.__mappings:
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 return self.__mapping[code]
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 else:
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 return code
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 def __getClientDataAzure(self):
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 Private method to retrieve the client data.
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
86 @return tuple giving the API subscription key, the API subscription
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
87 region and a flag indicating validity
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
88 @rtype tuple of (str, str, bool)
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 subscriptionKey = self.plugin.getPreferences("MsTranslatorKey")
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
91 subscriptionRegion = self.plugin.getPreferences("MsTranslatorRegion")
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
92 valid = bool(subscriptionKey) and bool(subscriptionRegion)
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
93 return subscriptionKey, subscriptionRegion, valid
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 def getTranslation(self, requestObject, text, originalLanguage,
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 translationLanguage):
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 Public method to translate the given text.
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 @param requestObject reference to the request object
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
101 @type TranslatorRequest
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
102 @param text text to be translated
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
103 @type str
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
104 @param originalLanguage language code of the original
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
105 @type str
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
106 @param translationLanguage language code of the translation
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
107 @type str
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
108 @return tuple of translated text and flag indicating success
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
109 @rtype tuple of (str, bool)
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 """
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
111 subscriptionKey, subscriptionRegion, valid = (
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
112 self.__getClientDataAzure()
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
113 )
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 if not valid:
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 return (self.tr("""You have not registered for the Microsoft"""
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
116 """ Azure Translation service."""),
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 False)
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
119 params = "&from={0}&to={1}".format(
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 self.__mapLanguageCode(originalLanguage),
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 self.__mapLanguageCode(translationLanguage),
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
122 )
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 url = QUrl(self.TranslatorUrl + params)
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
124
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
125 requestList = [{"Text": text}]
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
126 request = QByteArray(json.dumps(requestList).encode("utf-8"))
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
128 headers = [
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
129 (b"Ocp-Apim-Subscription-Key", subscriptionKey.encode("utf8")),
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
130 (b"Ocp-Apim-Subscription-Region",
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
131 subscriptionRegion.encode("utf8")),
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
132 (b"Content-Type", b"application/json; charset=UTF-8"),
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
133 (b"Content-Length", str(len(request)).encode("utf-8")),
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
134 ]
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
135 response, ok = requestObject.post(
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
136 url, request, dataType="json", extraHeaders=headers
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
137 )
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
138 if ok:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
139 try:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
140 responseList = json.loads(response)
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
141 responseDict = responseList[0]
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
142 except ValueError:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
143 return (self.tr("MS Translator: Invalid response received"),
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
144 False)
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
145
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
146 if "translations" not in responseDict:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
147 return (self.tr("MS Translator: No translation available."),
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
148 False)
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
149
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
150 result = ""
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
151 translations = responseDict["translations"]
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
152 for translation in translations:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
153 result += translation["text"]
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
154 if translation != translations[-1]:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
155 result += "<br/>"
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
156 else:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
157 result = response
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
158 return result, ok

eric ide

mercurial