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

Sat, 31 Dec 2022 16:23:21 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 31 Dec 2022 16:23:21 +0100
branch
eric7
changeset 9653
e67609152c5e
parent 9576
be9f8e7e42e0
child 10439
21c28b0f9e41
permissions
-rw-r--r--

Updated copyright for 2023.

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
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
3 # Copyright (c) 2014 - 2023 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
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
12 from PyQt6.QtCore import QByteArray, QTimer, QUrl
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 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
22
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
23 TranslatorUrl = (
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9495
diff changeset
24 "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0"
7256
4ef3b78ebb4e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
25 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
26
6018
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
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
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)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
37
6018
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 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
42
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
43 QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44
6018
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.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
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"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
53
6018
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.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
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 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
61 return [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62 "ar",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63 "bg",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
64 "ca",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
65 "cs",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
66 "da",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
67 "de",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
68 "en",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69 "es",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
70 "et",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71 "fi",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
72 "fr",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73 "hi",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74 "hu",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
75 "id",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76 "it",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77 "ja",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
78 "ko",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
79 "lt",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
80 "lv",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81 "mt",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
82 "nl",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
83 "no",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
84 "pl",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85 "pt",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86 "ro",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
87 "ru",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
88 "sk",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89 "sl",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
90 "sv",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91 "th",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
92 "tr",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93 "uk",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94 "vi",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
95 "zh-CN",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
96 "zh-TW",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 def __mapLanguageCode(self, code):
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 Private method to map a language code to the Microsoft code.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
103 @param code language code
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
104 @type str
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
105 @return mapped language code
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
106 @rtype str
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 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
109 return self.__mapping[code]
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 else:
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 return code
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
112
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 def __getClientDataAzure(self):
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 Private method to retrieve the client data.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
116
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
117 @return tuple giving the API subscription key, the API subscription
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
118 region and a flag indicating validity
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
119 @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
120 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 subscriptionKey = self.plugin.getPreferences("MsTranslatorKey")
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
122 subscriptionRegion = self.plugin.getPreferences("MsTranslatorRegion")
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
123 valid = bool(subscriptionKey) and bool(subscriptionRegion)
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
124 return subscriptionKey, subscriptionRegion, valid
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
126 def getTranslation(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127 self, requestObject, text, originalLanguage, translationLanguage
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128 ):
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 Public method to translate the given text.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 @param requestObject reference to the request object
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
133 @type TranslatorRequest
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
134 @param text text to be translated
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
135 @type str
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
136 @param originalLanguage language code of the original
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
137 @type str
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
138 @param translationLanguage language code of the translation
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
139 @type str
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
140 @return tuple of translated text and flag indicating success
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
141 @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
142 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143 subscriptionKey, subscriptionRegion, valid = self.__getClientDataAzure()
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 if not valid:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145 return (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
146 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
147 """You have not registered for the Microsoft"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148 """ Azure Translation service."""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150 False,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
151 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
152
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
153 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
154 self.__mapLanguageCode(originalLanguage),
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 self.__mapLanguageCode(translationLanguage),
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
156 )
6018
1c858879d3d0 Added the translator plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 url = QUrl(self.TranslatorUrl + params)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
158
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
159 requestList = [{"Text": text}]
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
160 request = QByteArray(json.dumps(requestList).encode("utf-8"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
161
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
162 headers = [
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
163 (b"Ocp-Apim-Subscription-Key", subscriptionKey.encode("utf8")),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
164 (b"Ocp-Apim-Subscription-Region", subscriptionRegion.encode("utf8")),
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
165 (b"Content-Type", b"application/json; charset=UTF-8"),
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
166 (b"Content-Length", str(len(request)).encode("utf-8")),
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
167 ]
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
168 response, ok = requestObject.post(
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
169 url, request, dataType="json", extraHeaders=headers
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
170 )
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
171 if ok:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
172 try:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
173 responseList = json.loads(response)
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
174 responseDict = responseList[0]
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
175 except ValueError:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
176 return (self.tr("MS Translator: Invalid response received"), False)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
178 if "translations" not in responseDict:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
179 return (self.tr("MS Translator: No translation available."), False)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
180
9148
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
181 result = ""
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
182 translations = responseDict["translations"]
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
183 for translation in translations:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
184 result += translation["text"]
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
185 if translation != translations[-1]:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
186 result += "<br/>"
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
187 else:
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
188 result = response
b31f0d894b55 Translator
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
189 return result, ok
9495
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
190
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
191
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
192 def createEngine(plugin, parent=None):
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
193 """
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
194 Function to instantiate a translator engine object.
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
195
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
196 @param plugin reference to the plugin object
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
197 @type TranslatorPlugin
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
198 @param parent reference to the parent object (defaults to None)
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
199 @type QObject (optional)
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
200 @return reference to the instantiated translator engine object
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
201 @rtype MicrosoftEngine
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
202 """
28ab5f487f71 Changed translation engine imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
203 return MicrosoftEngine(plugin, parent=parent)

eric ide

mercurial