33 @param parent reference to the parent object (QObject) |
33 @param parent reference to the parent object (QObject) |
34 """ |
34 """ |
35 super(YandexEngine, self).__init__(plugin, parent) |
35 super(YandexEngine, self).__init__(plugin, parent) |
36 |
36 |
37 self.__errors = { |
37 self.__errors = { |
38 401: self.tr("Invalid API key."), |
38 401: self.tr("Yandex: Invalid API key."), |
39 402: self.tr("API key has been blocked."), |
39 402: self.tr("Yandex: API key has been blocked."), |
40 403: self.tr("Daily limit for requests has been reached."), |
40 403: self.tr("Yandex: Daily limit for requests has been reached."), |
41 404: self.tr("Daily limit for the volume of translated text" |
41 404: self.tr("Yandex: Daily limit for the volume of translated" |
42 " reached."), |
42 " text reached."), |
43 413: self.tr("Text size exceeds the maximum."), |
43 413: self.tr("Yandex: Text size exceeds the maximum."), |
44 422: self.tr("Text could not be translated."), |
44 422: self.tr("Yandex: Text could not be translated."), |
45 501: self.tr("The specified translation direction is not" |
45 501: self.tr("Yandex: The specified translation direction is not" |
46 " supported."), |
46 " supported."), |
47 } |
47 } |
48 |
48 |
49 QTimer.singleShot(0, self.availableTranslationsLoaded.emit) |
49 QTimer.singleShot(0, self.availableTranslationsLoaded.emit) |
50 |
50 |
81 @param translationLanguage language code of the translation (string) |
81 @param translationLanguage language code of the translation (string) |
82 @return tuple of translated text (string) and flag indicating |
82 @return tuple of translated text (string) and flag indicating |
83 success (boolean) |
83 success (boolean) |
84 """ |
84 """ |
85 if len(text) > self.TranslatorLimit: |
85 if len(text) > self.TranslatorLimit: |
86 return (self.tr("Only texts up to {0} characters are allowed.") |
86 return ( |
87 .format(self.TranslatorLimit), False) |
87 self.tr("Yandex: Only texts up to {0} characters are allowed.") |
|
88 .format(self.TranslatorLimit), |
|
89 False |
|
90 ) |
88 |
91 |
89 apiKey = self.plugin.getPreferences("YandexKey") |
92 apiKey = self.plugin.getPreferences("YandexKey") |
90 if not apiKey: |
93 if not apiKey: |
91 return self.tr("A valid Yandex key is required."), False |
94 return self.tr("Yandex: A valid key is required."), False |
92 |
95 |
93 params = QByteArray( |
96 params = QByteArray( |
94 "key={0}&lang={1}-{2}&text=".format( |
97 "key={0}&lang={1}-{2}&text=".format( |
95 apiKey, originalLanguage, translationLanguage).encode("utf-8")) |
98 apiKey, originalLanguage, translationLanguage).encode("utf-8")) |
96 encodedText = ( |
99 encodedText = ( |
101 response, ok = requestObject.post(QUrl(self.TranslatorUrl), request) |
104 response, ok = requestObject.post(QUrl(self.TranslatorUrl), request) |
102 if ok: |
105 if ok: |
103 try: |
106 try: |
104 responseDict = json.loads(response) |
107 responseDict = json.loads(response) |
105 except ValueError: |
108 except ValueError: |
106 return self.tr("Invalid response received"), False |
109 return self.tr("Yandex: Invalid response received"), False |
107 |
110 |
108 if responseDict["code"] != 200: |
111 if responseDict["code"] != 200: |
109 try: |
112 try: |
110 error = self.__errors[responseDict["code"]] |
113 error = self.__errors[responseDict["code"]] |
111 except KeyError: |
114 except KeyError: |
112 error = self.tr( |
115 error = self.tr( |
113 "Unknown error code ({0}) received." |
116 "Yandex: Unknown error code ({0}) received." |
114 ).format(responseDict["code"]) |
117 ).format(responseDict["code"]) |
115 return error, False |
118 return error, False |
116 |
119 |
117 sentences = responseDict["text"] |
120 sentences = responseDict["text"] |
118 result = "" |
121 result = "" |