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

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9473
3f23dbf37dbe
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
17 class MyMemoryEngine(TranslationEngine): 17 class MyMemoryEngine(TranslationEngine):
18 """ 18 """
19 Class implementing the translation engine for the MyMemory 19 Class implementing the translation engine for the MyMemory
20 translation service. 20 translation service.
21 """ 21 """
22
22 TranslatorUrl = "http://api.mymemory.translated.net/get" 23 TranslatorUrl = "http://api.mymemory.translated.net/get"
23 TranslatorLimit = 500 24 TranslatorLimit = 500
24 25
25 def __init__(self, plugin, parent=None): 26 def __init__(self, plugin, parent=None):
26 """ 27 """
27 Constructor 28 Constructor
28 29
29 @param plugin reference to the plugin object 30 @param plugin reference to the plugin object
30 @type TranslatorPlugin 31 @type TranslatorPlugin
31 @param parent reference to the parent object 32 @param parent reference to the parent object
32 @type QObject 33 @type QObject
33 """ 34 """
34 super().__init__(plugin, parent) 35 super().__init__(plugin, parent)
35 36
36 QTimer.singleShot(0, self.availableTranslationsLoaded.emit) 37 QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
37 38
38 def engineName(self): 39 def engineName(self):
39 """ 40 """
40 Public method to return the name of the engine. 41 Public method to return the name of the engine.
41 42
42 @return engine name 43 @return engine name
43 @rtype str 44 @rtype str
44 """ 45 """
45 return "mymemory" 46 return "mymemory"
46 47
47 def supportedLanguages(self): 48 def supportedLanguages(self):
48 """ 49 """
49 Public method to get the supported languages. 50 Public method to get the supported languages.
50 51
51 @return list of supported language codes 52 @return list of supported language codes
52 @rtype list of str 53 @rtype list of str
53 """ 54 """
54 return ["ar", "be", "bg", "bs", "ca", "cs", "da", "de", "el", "en", 55 return [
55 "es", "et", "fi", "fr", "ga", "gl", "hi", "hr", "hu", "id", 56 "ar",
56 "is", "it", "iw", "ja", "ka", "ko", "lt", "lv", "mk", "mt", 57 "be",
57 "nl", "no", "pl", "pt", "ro", "ru", "sk", "sl", "sq", "sr", 58 "bg",
58 "sv", "th", "tl", "tr", "uk", "vi", "zh-CN", "zh-TW", 59 "bs",
59 ] 60 "ca",
60 61 "cs",
61 def getTranslation(self, requestObject, text, originalLanguage, 62 "da",
62 translationLanguage): 63 "de",
64 "el",
65 "en",
66 "es",
67 "et",
68 "fi",
69 "fr",
70 "ga",
71 "gl",
72 "hi",
73 "hr",
74 "hu",
75 "id",
76 "is",
77 "it",
78 "iw",
79 "ja",
80 "ka",
81 "ko",
82 "lt",
83 "lv",
84 "mk",
85 "mt",
86 "nl",
87 "no",
88 "pl",
89 "pt",
90 "ro",
91 "ru",
92 "sk",
93 "sl",
94 "sq",
95 "sr",
96 "sv",
97 "th",
98 "tl",
99 "tr",
100 "uk",
101 "vi",
102 "zh-CN",
103 "zh-TW",
104 ]
105
106 def getTranslation(
107 self, requestObject, text, originalLanguage, translationLanguage
108 ):
63 """ 109 """
64 Public method to translate the given text. 110 Public method to translate the given text.
65 111
66 @param requestObject reference to the request object 112 @param requestObject reference to the request object
67 @type TranslatorRequest 113 @type TranslatorRequest
68 @param text text to be translated 114 @param text text to be translated
69 @type str 115 @type str
70 @param originalLanguage language code of the original 116 @param originalLanguage language code of the original
74 @return tuple of translated text and flag indicating success 120 @return tuple of translated text and flag indicating success
75 @rtype tuple of (str, bool) 121 @rtype tuple of (str, bool)
76 """ 122 """
77 if len(text) > self.TranslatorLimit: 123 if len(text) > self.TranslatorLimit:
78 return ( 124 return (
79 self.tr("MyMemory: Only texts up to {0} characters are" 125 self.tr(
80 " allowed.") 126 "MyMemory: Only texts up to {0} characters are" " allowed."
81 .format(self.TranslatorLimit), 127 ).format(self.TranslatorLimit),
82 False 128 False,
83 ) 129 )
84 130
85 myMemoryKey = self.plugin.getPreferences("MyMemoryKey") 131 myMemoryKey = self.plugin.getPreferences("MyMemoryKey")
86 keyParam = "&key={0}".format(myMemoryKey) if myMemoryKey else "" 132 keyParam = "&key={0}".format(myMemoryKey) if myMemoryKey else ""
87 133
88 myMemoryEmail = self.plugin.getPreferences("MyMemoryEmail") 134 myMemoryEmail = self.plugin.getPreferences("MyMemoryEmail")
89 emailParam = "&de={0}".format(myMemoryEmail) if myMemoryEmail else "" 135 emailParam = "&de={0}".format(myMemoryEmail) if myMemoryEmail else ""
90 136
91 params = "?of=json{3}{4}&langpair={0}|{1}&q={2}".format( 137 params = "?of=json{3}{4}&langpair={0}|{1}&q={2}".format(
92 originalLanguage, translationLanguage, text, 138 originalLanguage, translationLanguage, text, keyParam, emailParam
93 keyParam, emailParam) 139 )
94 url = QUrl(self.TranslatorUrl + params) 140 url = QUrl(self.TranslatorUrl + params)
95 response, ok = requestObject.get(url) 141 response, ok = requestObject.get(url)
96 if ok: 142 if ok:
97 response = str(response, "utf-8", "replace") 143 response = str(response, "utf-8", "replace")
98 try: 144 try:

eric ide

mercurial