eric6/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/YandexEngine.py

changeset 7748
23e98236a4c4
parent 7360
9190402e4505
child 7780
41420f82c0ac
equal deleted inserted replaced
7747:4f0b034f4c34 7748:23e98236a4c4
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 = ""

eric ide

mercurial