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: |