From 10de4791aee7ca1e03c07e687b57856f4418154c Mon Sep 17 00:00:00 2001 From: alekssamos Date: Tue, 5 Oct 2021 08:22:48 +0300 Subject: [PATCH] Requests via your own service --- README.md | 7 +- YandexTranslate.pot | 110 +++--- addon/doc/en/readme.md | 59 +-- addon/doc/en/readme2.md | 44 +++ addon/doc/ru/{readme.md => readme2.md} | 5 + .../globalPlugins/yandexTranslate/__init__.py | 14 +- .../yandexTranslate/yandexfreetranslate.py | 19 +- addon/installTasks.py | 13 + addon/locale/ru/LC_MESSAGES/nvda.po | 361 ++++++++++-------- addon/locale/ru/manifest.ini | 4 +- addon/manifest.ini | 4 +- buildVars.py | 4 +- 12 files changed, 393 insertions(+), 251 deletions(-) create mode 100644 addon/doc/en/readme2.md rename addon/doc/ru/{readme.md => readme2.md} (87%) create mode 100644 addon/installTasks.py diff --git a/README.md b/README.md index b7c7819..653f76b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Дополнение Яндекс.Переводчик для NVDA -[Скачать версию 2021.09.14](https://github.com/alekssamos/YandexTranslate/releases/latest/download/YandexTranslate-2021.09.14.nvda-addon) +[Скачать версию 2021.10.05](https://github.com/alekssamos/YandexTranslate/releases/latest/download/YandexTranslate-2021.10.05.nvda-addon) После установки зайдите в **NVDA меню**, **Параметры**, **Жесты ввода**, назначте удобные вам сочетания клавиш для YandexTranslate. Или используйте уже предустановленные (ниже). @@ -8,6 +8,11 @@ > Другие переводчики, такие, как "Translate", "InstantTranslate" и другие, > если есть, лучше отключить или удалить, во избежании конфликтов. +Новое 2: Начиная с версии от 5 октября 2021, +по умолчанию запросы будут идти через мой сервер. +Это должно улучшить работу сервиса для Вас, по скольку Яндекс блокирует некоторые IP адреса. +Вы всегда это можете отключить в настройках, поменяв тип API на web или iOS. + Новое: Если не работает, ошибка при создании ключа или что-нибудь такое, то откройте NVDA Меню, Сервис, Настройки Yandex Translate и установите API на iOS. diff --git a/YandexTranslate.pot b/YandexTranslate.pot index ce48d1f..9932f2d 100644 --- a/YandexTranslate.pot +++ b/YandexTranslate.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 'YandexTranslate' '2021.02.10'\n" +"Project-Id-Version: 'YandexTranslate' '2021.10.05'\n" "Report-Msgid-Bugs-To: 'nvda-translations@groups.io'\n" -"POT-Creation-Date: 2021-02-09 23:38+0300\n" +"POT-Creation-Date: 2021-10-05 08:09+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,6 +17,19 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" +#: addon\installTasks.py:12 +msgid "" +"Many users reported problems with the service when others were doing well. I " +"have added a new API type to the settings of this add-on. All requests to " +"Yandex will go through my own server. You can disable this by still " +"selecting the web or iOS API in the add-on settings. I will collect and " +"analyze your requests to track and fix errors." +msgstr "" + +#: addon\installTasks.py:12 addon\globalPlugins\yandexTranslate\__init__.py:297 +msgid "Yandex Translate" +msgstr "" + #: addon\globalPlugins\yandexTranslate\__init__.py:70 msgid "Invalid API key" msgstr "" @@ -53,166 +66,167 @@ msgstr "" msgid "Yandex Translate Settings" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:101 +#: addon\globalPlugins\yandexTranslate\__init__.py:102 msgid "&API:" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:101 +#: addon\globalPlugins\yandexTranslate\__init__.py:102 msgid "Web" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:101 +#: addon\globalPlugins\yandexTranslate\__init__.py:102 msgid "iOS" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:105 +#: addon\globalPlugins\yandexTranslate\__init__.py:102 +msgid "broker1" +msgstr "" + +#: addon\globalPlugins\yandexTranslate\__init__.py:106 msgid "&Source language:" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:105 +#: addon\globalPlugins\yandexTranslate\__init__.py:106 msgid "&Detect language automatically" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:111 +#: addon\globalPlugins\yandexTranslate\__init__.py:112 msgid "&Primary target language:" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:114 +#: addon\globalPlugins\yandexTranslate\__init__.py:115 msgid "S&econdary target language:" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:117 +#: addon\globalPlugins\yandexTranslate\__init__.py:118 msgid "" "&Language translation, if the language of the text coincides with the target:" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:120 +#: addon\globalPlugins\yandexTranslate\__init__.py:121 msgid "&Copy translation to clipboard" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:124 +#: addon\globalPlugins\yandexTranslate\__init__.py:125 msgid "&Play tones when translation waiting" msgstr "" -#. self.key = settingsSizerHelper.addLabeledControl(_("&API key:"), wx.TextCtrl, value=config.conf["YandexTranslate"]["key"]) -#: addon\globalPlugins\yandexTranslate\__init__.py:130 +#. self.key = settingsSizerHelper.addLabeledControl(_("&API key:"), wx.TextCtrl, value=ytc["key"]) +#: addon\globalPlugins\yandexTranslate\__init__.py:131 msgid "&Generate new API key" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:134 +#: addon\globalPlugins\yandexTranslate\__init__.py:135 msgid "&Use proxy server" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:139 +#: addon\globalPlugins\yandexTranslate\__init__.py:140 msgid "Proxy &protocol:" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:142 +#: addon\globalPlugins\yandexTranslate\__init__.py:143 msgid "Proxy &host:" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:143 +#: addon\globalPlugins\yandexTranslate\__init__.py:144 msgid "Proxy p&ort:" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:145 +#: addon\globalPlugins\yandexTranslate\__init__.py:146 msgid "Proxy &login:" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:146 +#: addon\globalPlugins\yandexTranslate\__init__.py:147 msgid "Proxy p&assword:" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:149 +#: addon\globalPlugins\yandexTranslate\__init__.py:150 msgid "&Reset settings to the default value" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:169 +#: addon\globalPlugins\yandexTranslate\__init__.py:174 msgid "A new key is created successfully" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:171 +#: addon\globalPlugins\yandexTranslate\__init__.py:176 msgid "" "Failed to get a new key. Check your internet connection, wait a bit or go to " "Yandex, enter the captcha and try again." msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:174 -#: addon\globalPlugins\yandexTranslate\__init__.py:190 +#: addon\globalPlugins\yandexTranslate\__init__.py:179 +#: addon\globalPlugins\yandexTranslate\__init__.py:195 msgid "Error saving settings" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:291 -msgid "Yandex Translate" -msgstr "" - -#: addon\globalPlugins\yandexTranslate\__init__.py:319 +#. Creates submenu of addon +#: addon\globalPlugins\yandexTranslate\__init__.py:325 msgid "Yandex Translate Settings..." msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:347 +#: addon\globalPlugins\yandexTranslate\__init__.py:363 msgid "" "Unfortunately the translation is not available. Please check your Internet " "connection" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:352 +#: addon\globalPlugins\yandexTranslate\__init__.py:368 #, python-format msgid "Error: %s" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:383 +#: addon\globalPlugins\yandexTranslate\__init__.py:399 msgid "Translate text from the clipboard" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:392 -#: addon\globalPlugins\yandexTranslate\__init__.py:406 -#: addon\globalPlugins\yandexTranslate\__init__.py:435 +#: addon\globalPlugins\yandexTranslate\__init__.py:408 +#: addon\globalPlugins\yandexTranslate\__init__.py:422 +#: addon\globalPlugins\yandexTranslate\__init__.py:451 msgid "No text to translate" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:398 +#: addon\globalPlugins\yandexTranslate\__init__.py:414 msgid "Translates the selected text." msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:412 +#: addon\globalPlugins\yandexTranslate\__init__.py:428 msgid "Translates the last spoken phrase" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:422 +#: addon\globalPlugins\yandexTranslate\__init__.py:438 msgid "Translates text from navigator object" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:441 -#: addon\globalPlugins\yandexTranslate\__init__.py:454 +#: addon\globalPlugins\yandexTranslate\__init__.py:457 +#: addon\globalPlugins\yandexTranslate\__init__.py:470 msgid "Switching between the primary and secondary target language" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:461 +#: addon\globalPlugins\yandexTranslate\__init__.py:477 msgid "Copy to clipboard" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:463 +#: addon\globalPlugins\yandexTranslate\__init__.py:479 msgid "No translation to copy" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:464 +#: addon\globalPlugins\yandexTranslate\__init__.py:480 msgid "Copy last translation to clipboard" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:469 +#: addon\globalPlugins\yandexTranslate\__init__.py:485 msgid "Shows the settings dialog" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:472 +#: addon\globalPlugins\yandexTranslate\__init__.py:488 msgid "Switches the function of automatic translation" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:477 +#: addon\globalPlugins\yandexTranslate\__init__.py:493 msgid "Automatic translation enabled" msgstr "" -#: addon\globalPlugins\yandexTranslate\__init__.py:481 +#: addon\globalPlugins\yandexTranslate\__init__.py:497 msgid "Automatic translation disabled" msgstr "" diff --git a/addon/doc/en/readme.md b/addon/doc/en/readme.md index f06cb77..653f76b 100644 --- a/addon/doc/en/readme.md +++ b/addon/doc/en/readme.md @@ -1,39 +1,42 @@ -# Yandex.Translate addon for NVDA +# Дополнение Яндекс.Переводчик для NVDA -[Addon home page](https://github.com/alekssamos/YandexTranslate/) +[Скачать версию 2021.10.05](https://github.com/alekssamos/YandexTranslate/releases/latest/download/YandexTranslate-2021.10.05.nvda-addon) -After installation, go to the **NVDA menu**, **Preferences**, **Input Gestures**, -assign convenient keyboard shortcuts for YandexTranslate. Or use the already pre-installed ones (below). +После установки зайдите в **NVDA меню**, **Параметры**, **Жесты ввода**, +назначте удобные вам сочетания клавиш для YandexTranslate. Или используйте уже предустановленные (ниже). -> Other translators, such as "Translate", "InstantTranslate" and others, -> if there is, it is better to disable or delete it, in order to avoid conflicts. +> Другие переводчики, такие, как "Translate", "InstantTranslate" и другие, +> если есть, лучше отключить или удалить, во избежании конфликтов. -New: If it doesn't work, an error occurred when creating the key or something -such, -then open the NVDA Menu, Tools, Yandex Translate Settings -and install the API on iOS. -These keys are used in the iPhone app and have not changed for more than 6 months, -it should work better and more stable. +Новое 2: Начиная с версии от 5 октября 2021, +по умолчанию запросы будут идти через мой сервер. +Это должно улучшить работу сервиса для Вас, по скольку Яндекс блокирует некоторые IP адреса. +Вы всегда это можете отключить в настройках, поменяв тип API на web или iOS. -The addon translates the selected text fragment or content from the clipboard, there is an automatic (instant) translation of NVDA speech. +Новое: Если не работает, ошибка при создании ключа или что-нибудь такое, +то откройте NVDA Меню, Сервис, Настройки Yandex Translate +и установите API на iOS. +Эти ключи используются в приложении для iPhone и не меняются уже больше 6 месяцев, +должно работать лучше и стабильней. -If there is a braille display, the result will be duplicated on it as well. +Дополнение переводит выделенный фрагмент текста или содержимое из буфера обмена, есть автоматический (мгновенный) перевод речи NVDA. -> Doesn't translate? Set up language pairs. -> Didn't help? -> Change the IP address / reconnect connection to the Internet (turn off turn on the wifi router from the socket), -> turn on or off airplane mode, etc. +Если есть брайлевский дисплей, результат будет дублироваться и на него. -The addon can be configured in the NVDA menu, Tools, Yandex Translate Settings. +> Не переводит? Настройте языковые пары. +> Не помогло? +> Поменяйте IP адрес / переподключитесь к интернету (выключить включить wifi роутер из разетки), +> включить или выключить режим полёта и т.д. -The use of a proxy server is supported. +Дополнение можно настроить в NVDA меню, Сервис, Настройки Yandex Translate. -It is possible to work with configuration profiles, for example, there is one language pair for the Google Chrome browser, another for Unigram, and in the Notepad program you want to turn on the sound signal during translation. **NVDA menu**, **Configuration profiles...**, for each application you create, -switch and configure the translator. +Поддерживается использование прокси сервера. -### Keyboard shortcuts -* nvda+Shift+T - Translation of the selected text. -* nvda+Shift+Y - Translate text from the clipboard. -* nvda+Shift+U - Swap the primary and secondary target languages. -* nvda+Shift+I - Automatic translation. -* The gesture is not assigned - Translate the last spoken phrase +Есть возможность работать с профилями конфигурации, например, для браузера Google Chrome одна языковая пара, для Unigram другая, а в программе Блокнот вы хотите включить звуковой сигнал во время перевода. **NVDA меню**, **Профили конфигурации...**, для каждого приложения создаёте, переключаетесь и настраиваете переводчик. + +### Горячие клавиши +* nvda+Shift+T - Перевод выделенного текста. +* nvda+Shift+Y - Перевод текста из буфера обмена. +* nvda+Shift+U - Поменять первичный и вторичный целевые языки местами. +* nvda+Shift+I - Автоматический перевод. +* Жест не назначен - Перевести последнюю сказанную фразу diff --git a/addon/doc/en/readme2.md b/addon/doc/en/readme2.md new file mode 100644 index 0000000..533034e --- /dev/null +++ b/addon/doc/en/readme2.md @@ -0,0 +1,44 @@ +# Yandex.Translate addon for NVDA + +[Addon home page](https://github.com/alekssamos/YandexTranslate/) + +After installation, go to the **NVDA menu**, **Preferences**, **Input Gestures**, +assign convenient keyboard shortcuts for YandexTranslate. Or use the already pre-installed ones (below). + +> Other translators, such as "Translate", "InstantTranslate" and others, +> if there is, it is better to disable or delete it, in order to avoid conflicts. + +New 2: Starting with the version from October 5, 2021, +by default, requests will go through my server. +This should improve the service for you, since Yandex blocks some IP addresses. +You can always disable this in the settings by changing the API type to web or iOS. + +New: If it doesn't work, an error occurred when creating the key or something +such, +then open the NVDA Menu, Tools, Yandex Translate Settings +and install the API on iOS. +These keys are used in the iPhone app and have not changed for more than 6 months, +it should work better and more stable. + +The addon translates the selected text fragment or content from the clipboard, there is an automatic (instant) translation of NVDA speech. + +If there is a braille display, the result will be duplicated on it as well. + +> Doesn't translate? Set up language pairs. +> Didn't help? +> Change the IP address / reconnect connection to the Internet (turn off turn on the wifi router from the socket), +> turn on or off airplane mode, etc. + +The addon can be configured in the NVDA menu, Tools, Yandex Translate Settings. + +The use of a proxy server is supported. + +It is possible to work with configuration profiles, for example, there is one language pair for the Google Chrome browser, another for Unigram, and in the Notepad program you want to turn on the sound signal during translation. **NVDA menu**, **Configuration profiles...**, for each application you create, +switch and configure the translator. + +### Keyboard shortcuts +* nvda+Shift+T - Translation of the selected text. +* nvda+Shift+Y - Translate text from the clipboard. +* nvda+Shift+U - Swap the primary and secondary target languages. +* nvda+Shift+I - Automatic translation. +* The gesture is not assigned - Translate the last spoken phrase diff --git a/addon/doc/ru/readme.md b/addon/doc/ru/readme2.md similarity index 87% rename from addon/doc/ru/readme.md rename to addon/doc/ru/readme2.md index d301f58..ba48e4e 100644 --- a/addon/doc/ru/readme.md +++ b/addon/doc/ru/readme2.md @@ -8,6 +8,11 @@ > Другие переводчики, такие, как "Translate", "InstantTranslate" и другие, > если есть, лучше отключить или удалить, во избежании конфликтов. +Новое 2: Начиная с версии от 5 октября 2021, +по умолчанию запросы будут идти через мой сервер. +Это должно улучшить работу сервиса для Вас, по скольку Яндекс блокирует некоторые IP адреса. +Вы всегда это можете отключить в настройках, поменяв тип API на web или iOS. + Новое: Если не работает, ошибка при создании ключа или что-нибудь такое, то откройте NVDA Меню, Сервис, Настройки Yandex Translate и установите API на iOS. diff --git a/addon/globalPlugins/yandexTranslate/__init__.py b/addon/globalPlugins/yandexTranslate/__init__.py index 3b89d71..09b4677 100644 --- a/addon/globalPlugins/yandexTranslate/__init__.py +++ b/addon/globalPlugins/yandexTranslate/__init__.py @@ -33,7 +33,7 @@ proxy_protocols = tuple(["http", "https", "socks4", "socks5"]) default_conf = { "key": "", - "api": "ios", + "api": "broker1", "sourceLang": "auto", "primaryTargetLang": "en", "secondaryTargetLang": "ru", @@ -89,7 +89,6 @@ def wrapper(self, gesture): script(self, gesture) return wrapper -yt = YandexFreeTranslate(config.conf["YandexTranslate"]["api"].lower()) class YandexTranslateSettingsDialog(gui.SettingsDialog): title = _("Yandex Translate Settings") @@ -99,7 +98,7 @@ def makeSettings(self, sizer): self.langList.sort() settingsSizerHelper = gui.guiHelper.BoxSizerHelper(self, sizer=sizer) - self.apiSel = settingsSizerHelper.addLabeledControl(_("&API:"), wx.Choice, choices=[_("Web"), _("iOS")]) + self.apiSel = settingsSizerHelper.addLabeledControl(_("&API:"), wx.Choice, choices=["Web", "iOS", "broker1"]) self.apiSel.SetStringSelection(ytc["api"].lower()) self.Bind(wx.EVT_CHOICE, self.onApiSel) @@ -158,13 +157,19 @@ def postInit(self): def onApiSel(self, event): global yt - if self.apiSel.GetStringSelection().lower() == "web": + apitype = self.apiSel.GetStringSelection().lower() + if apitype == "web": self.generate_new_key.Enable() + elif apitype == "ios": + self.generate_new_key.Disable() else: self.generate_new_key.Disable() + self.useProxy.SetValue(False) + self.onUseProxy(None) yt = YandexFreeTranslate(config.conf["YandexTranslate"]["api"].lower()) def onGenerate_new_key(self, event): + yt = YandexFreeTranslate(config.conf["YandexTranslate"]["api"].lower()) try: config.conf["YandexTranslate"]["key"] = yt.regenerate_key() gui.messageBox(_("A new key is created successfully")+"\n"+config.conf["YandexTranslate"]["key"], "", style=wx.OK | wx.ICON_INFORMATION) @@ -269,6 +274,7 @@ def run(self): def _dc(self, s): return s.decode("UTF8") def _HTTPRequest(self): + yt = YandexFreeTranslate(config.conf["YandexTranslate"]["api"].lower()) cacheKey = (self._kwargs["lang"], self._kwargs["text"]) if cacheKey in _cache: log.debug("cache: True") diff --git a/addon/globalPlugins/yandexTranslate/yandexfreetranslate.py b/addon/globalPlugins/yandexTranslate/yandexfreetranslate.py index 85f68a3..c42a2b4 100644 --- a/addon/globalPlugins/yandexTranslate/yandexfreetranslate.py +++ b/addon/globalPlugins/yandexTranslate/yandexfreetranslate.py @@ -26,6 +26,7 @@ class YandexFreeTranslateError(Exception): pass class YandexFreeTranslate(): error_count = 0 + broker1 = 'http://alekssamosbt.ru/yt.php' siteurl = "https://translate.yandex.ru/" apibaseurl = "https://translate.yandex.net/api/v1/tr.json/" api="" @@ -50,6 +51,7 @@ def _getparams(self, **p): params["web"] = { "id":self.key, "srv":"tr-text", "reason":"paste", "options": 4 } + params["broker1"] = {} params[self.api].update(p) return params[self.api] def decode_response(self, response): @@ -97,11 +99,14 @@ def _sid_to_key(self, sid): for item in sid.split(splitter): l.append(item[::-1]) return splitter.join(l)+self.keysuffix def _parse_sid(self): - if self.api != "web": ValueError("available only for web API. Now using "+self.api) + if self.api != "web": return "" # ValueError("available only for web API. Now using "+self.api) try: if self.useProxy: old_context = ssl._create_default_https_context ssl._create_default_https_context = ssl.create_default_context + else: + old_context = ssl._create_default_https_context + ssl._create_default_https_context = ssl._create_unverified_context req = self._create_request(self.siteurl) req.add_header("User-Agent", self.ua) req.add_header("Accept", r"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 ") @@ -119,6 +124,9 @@ def _parse_sid(self): finally: if self.useProxy: ssl._create_default_https_context = old_context + else: + ssl._create_default_https_context = old_context + def _save_key(self, key): with open(self.keyfilename, "w", encoding="utf8") as f: @@ -141,11 +149,16 @@ def regenerate_key(self): os.rename(self.keyfilename, self.backfilename) self.key = self._get_key() return self.key - def __init__(self, api="web"): + def __init__(self, api="broker1"): self.api = api if not os.path.isfile(self.keyfilename) and os.path.isfile(self.backfilename): os.rename(self.backfilename, self.keyfilename) def translate(self, lang, text=""): + utr = '' + if self.api == 'broker1': + utr = self.broker1+"?"+urllibparse.urlencode(self._getparams(lang=lang)) + else: + utr = self.apibaseurl+"translate?"+urllibparse.urlencode(self._getparams(lang=lang)) resp = {} content = None try: @@ -156,7 +169,7 @@ def translate(self, lang, text=""): if text == "": raise ValueError("text") p=[] for part in smartsplit(text, 500, 550): - req = self._create_request(self.apibaseurl+"translate?"+urllibparse.urlencode(self._getparams(lang=lang))) + req = self._create_request(utr) req.add_header("User-Agent", self.ua) req.add_header("Accept", r"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 ") req.add_header("Accept-Language", r"ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3") diff --git a/addon/installTasks.py b/addon/installTasks.py new file mode 100644 index 0000000..3aa8d0b --- /dev/null +++ b/addon/installTasks.py @@ -0,0 +1,13 @@ +import config +import addonHandler +import gui +import wx + +addonHandler.initTranslation() + + +def onInstall(): + if "YandexTranslate" not in config.conf: config.conf["YandexTranslate"]={} + config.conf["YandexTranslate"]["api"] = "broker1" + config.conf["YandexTranslate"]["useProxy"] = False + gui.messageBox(_("Many users reported problems with the service when others were doing well. I have added a new API type to the settings of this add-on. All requests to Yandex will go through my own server. You can disable this by still selecting the web or iOS API in the add-on settings. I will collect and analyze your requests to track and fix errors."), _("Yandex Translate"), style=wx.OK | wx.ICON_WARNING) diff --git a/addon/locale/ru/LC_MESSAGES/nvda.po b/addon/locale/ru/LC_MESSAGES/nvda.po index cf0370a..84c94a9 100644 --- a/addon/locale/ru/LC_MESSAGES/nvda.po +++ b/addon/locale/ru/LC_MESSAGES/nvda.po @@ -1,125 +1,160 @@ msgid "" msgstr "" "Project-Id-Version: Yandex Translate\n" -"Report-Msgid-Bugs-To: nvda-translations@groups.io\n" -"POT-Creation-Date: 2020-09-04 13:07+0300\n" -"PO-Revision-Date: 2020-09-04 13:07+0300\n" +"Report-Msgid-Bugs-To: 'nvda-translations@groups.io'\n" +"POT-Creation-Date: 2021-10-05 08:09+0300\n" +"PO-Revision-Date: 2021-10-05 08:13+0300\n" "Last-Translator: Alex \n" "Language-Team: \n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.4.1\n" +"X-Generator: Poedit 3.0\n" "X-Poedit-Basepath: .\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Poedit-SearchPath-0: ../../../globalPlugins\n" -#: ../../../globalPlugins/yandexTranslate/__init__.py:50 +#: addon\installTasks.py:12 +msgid "" +"Many users reported problems with the service when others were doing well. I " +"have added a new API type to the settings of this add-on. All requests to " +"Yandex will go through my own server. You can disable this by still " +"selecting the web or iOS API in the add-on settings. I will collect and " +"analyze your requests to track and fix errors." +msgstr "" +"Многие пользователи сообщали о проблемах с сервисом, когда у других все было " +"хорошо. Я добавил новый тип API в настройки этого дополнения. Все запросы в " +"Яндекс будут проходить через мой собственный сервер. Вы можете отключить " +"это, по-прежнему выбрав API web или iOS в настройках дополнения. Я буду " +"собирать и анализировать ваши запросы, чтобы отслеживать и исправлять ошибки." + +#: addon\installTasks.py:12 addon\globalPlugins\yandexTranslate\__init__.py:297 +msgid "Yandex Translate" +msgstr "Яндекс Переводчик" + +#: addon\globalPlugins\yandexTranslate\__init__.py:70 msgid "Invalid API key" msgstr "Неправильный ключ API" -#: ../../../globalPlugins/yandexTranslate/__init__.py:51 +#: addon\globalPlugins\yandexTranslate\__init__.py:71 msgid "This API key has been blocked" msgstr "Ключ API заблокирован" -#: ../../../globalPlugins/yandexTranslate/__init__.py:52 +#: addon\globalPlugins\yandexTranslate\__init__.py:72 msgid "You have reached the daily limit for requests" msgstr "Превышено суточное ограничение на количество запросов" -#: ../../../globalPlugins/yandexTranslate/__init__.py:53 +#: addon\globalPlugins\yandexTranslate\__init__.py:73 msgid "You have reached the daily limit for the volume of translated text" msgstr "Превышено суточное ограничение на объем переведенного текста" -#: ../../../globalPlugins/yandexTranslate/__init__.py:54 +#: addon\globalPlugins\yandexTranslate\__init__.py:74 msgid "The text size exceeds the maximum" msgstr "Превышен максимально допустимый размер текста" -#: ../../../globalPlugins/yandexTranslate/__init__.py:55 +#: addon\globalPlugins\yandexTranslate\__init__.py:75 msgid "The text could not be translated" msgstr "Текст не может быть переведён" -#: ../../../globalPlugins/yandexTranslate/__init__.py:56 +#: addon\globalPlugins\yandexTranslate\__init__.py:76 msgid "The specified translation direction is not supported" msgstr "Заданное направление перевода не поддерживается" -#: ../../../globalPlugins/yandexTranslate/__init__.py:63 +#: addon\globalPlugins\yandexTranslate\__init__.py:87 msgid "Action cannot be performed because NVDA running on secure desktop" msgstr "" "Действие не может быть выполнено, так как NVDA работает на защищённом " "рабочем столе" -#: ../../../globalPlugins/yandexTranslate/__init__.py:69 +#: addon\globalPlugins\yandexTranslate\__init__.py:94 msgid "Yandex Translate Settings" -msgstr "Настройки Yandex Translate" +msgstr "Настройки Yandex Переводчика" + +#: addon\globalPlugins\yandexTranslate\__init__.py:102 +msgid "&API:" +msgstr "" -#: ../../../globalPlugins/yandexTranslate/__init__.py:76 +#: addon\globalPlugins\yandexTranslate\__init__.py:102 +msgid "Web" +msgstr "" + +#: addon\globalPlugins\yandexTranslate\__init__.py:102 +msgid "iOS" +msgstr "" + +#: addon\globalPlugins\yandexTranslate\__init__.py:102 +msgid "broker1" +msgstr "" + +#: addon\globalPlugins\yandexTranslate\__init__.py:106 msgid "&Source language:" msgstr "&Исходный язык:" -#: ../../../globalPlugins/yandexTranslate/__init__.py:76 +#: addon\globalPlugins\yandexTranslate\__init__.py:106 msgid "&Detect language automatically" msgstr "Определять язык автоматически" -#: ../../../globalPlugins/yandexTranslate/__init__.py:82 +#: addon\globalPlugins\yandexTranslate\__init__.py:112 msgid "&Primary target language:" msgstr "&Первичный целевой язык:" -#: ../../../globalPlugins/yandexTranslate/__init__.py:85 +#: addon\globalPlugins\yandexTranslate\__init__.py:115 msgid "S&econdary target language:" msgstr "&Вторичный целевой язык:" -#: ../../../globalPlugins/yandexTranslate/__init__.py:88 +#: addon\globalPlugins\yandexTranslate\__init__.py:118 msgid "" "&Language translation, if the language of the text coincides with the target:" msgstr "&Язык перевода, если язык текста совпадает с целевым:" -#: ../../../globalPlugins/yandexTranslate/__init__.py:91 +#: addon\globalPlugins\yandexTranslate\__init__.py:121 msgid "&Copy translation to clipboard" msgstr "&Копировать перевод в буфер обмена" -#: ../../../globalPlugins/yandexTranslate/__init__.py:95 +#: addon\globalPlugins\yandexTranslate\__init__.py:125 msgid "&Play tones when translation waiting" msgstr "В&оспроизводить сигналы при ожидании перевода" -#: ../../../globalPlugins/yandexTranslate/__init__.py:101 +#. self.key = settingsSizerHelper.addLabeledControl(_("&API key:"), wx.TextCtrl, value=ytc["key"]) +#: addon\globalPlugins\yandexTranslate\__init__.py:131 msgid "&Generate new API key" msgstr "С&генерировать новый ключ API" -#: ../../../globalPlugins/yandexTranslate/__init__.py:105 +#: addon\globalPlugins\yandexTranslate\__init__.py:135 msgid "&Use proxy server" msgstr "&Использовать прокси сервер" -#: ../../../globalPlugins/yandexTranslate/__init__.py:110 +#: addon\globalPlugins\yandexTranslate\__init__.py:140 msgid "Proxy &protocol:" msgstr "&Протокол прокси" -#: ../../../globalPlugins/yandexTranslate/__init__.py:113 +#: addon\globalPlugins\yandexTranslate\__init__.py:143 msgid "Proxy &host:" msgstr "&Хост прокси" -#: ../../../globalPlugins/yandexTranslate/__init__.py:114 +#: addon\globalPlugins\yandexTranslate\__init__.py:144 msgid "Proxy p&ort:" msgstr "По&рт прокси" -#: ../../../globalPlugins/yandexTranslate/__init__.py:116 +#: addon\globalPlugins\yandexTranslate\__init__.py:146 msgid "Proxy &login:" msgstr "&Логин прокси" -#: ../../../globalPlugins/yandexTranslate/__init__.py:117 +#: addon\globalPlugins\yandexTranslate\__init__.py:147 msgid "Proxy p&assword:" msgstr "П&ароль прокси" -#: ../../../globalPlugins/yandexTranslate/__init__.py:120 +#: addon\globalPlugins\yandexTranslate\__init__.py:150 msgid "&Reset settings to the default value" msgstr "&Сбросить настройки к значению по умолчанию" -#: ../../../globalPlugins/yandexTranslate/__init__.py:132 +#: addon\globalPlugins\yandexTranslate\__init__.py:174 msgid "A new key is created successfully" msgstr "Новый ключ успешно создан" -#: ../../../globalPlugins/yandexTranslate/__init__.py:134 +#: addon\globalPlugins\yandexTranslate\__init__.py:176 msgid "" "Failed to get a new key. Check your internet connection, wait a bit or go to " "Yandex, enter the captcha and try again." @@ -127,20 +162,17 @@ msgstr "" "Не удалось получить новый ключ. Проверьте подключение к интернету, подождите " "немного или зайдите в Яндекс, введите капчу и попробуйте еще раз." -#: ../../../globalPlugins/yandexTranslate/__init__.py:137 -#: ../../../globalPlugins/yandexTranslate/__init__.py:153 +#: addon\globalPlugins\yandexTranslate\__init__.py:179 +#: addon\globalPlugins\yandexTranslate\__init__.py:195 msgid "Error saving settings" msgstr "Ошибка при сохранении настроек" -#: ../../../globalPlugins/yandexTranslate/__init__.py:255 -msgid "Yandex Translate" -msgstr "Yandex Translate" - -#: ../../../globalPlugins/yandexTranslate/__init__.py:284 +#. Creates submenu of addon +#: addon\globalPlugins\yandexTranslate\__init__.py:325 msgid "Yandex Translate Settings..." msgstr "Настройки Yandex Translate" -#: ../../../globalPlugins/yandexTranslate/__init__.py:308 +#: addon\globalPlugins\yandexTranslate\__init__.py:363 msgid "" "Unfortunately the translation is not available. Please check your Internet " "connection" @@ -148,441 +180,454 @@ msgstr "" "К сожалению, перевод не доступен. Пожалуйста, проверьте ваше Интернет-" "соединение" -#: ../../../globalPlugins/yandexTranslate/__init__.py:313 +#: addon\globalPlugins\yandexTranslate\__init__.py:368 #, python-format msgid "Error: %s" msgstr "Ошибка: %s" -#: ../../../globalPlugins/yandexTranslate/__init__.py:348 -#: ../../../globalPlugins/yandexTranslate/__init__.py:358 -#: ../../../globalPlugins/yandexTranslate/__init__.py:381 -msgid "No text to translate" -msgstr "Нет текста для перевода" - -#: ../../../globalPlugins/yandexTranslate/__init__.py:352 +#: addon\globalPlugins\yandexTranslate\__init__.py:399 msgid "Translate text from the clipboard" msgstr "Переводит текст из буфера обмена" -#: ../../../globalPlugins/yandexTranslate/__init__.py:362 +#: addon\globalPlugins\yandexTranslate\__init__.py:408 +#: addon\globalPlugins\yandexTranslate\__init__.py:422 +#: addon\globalPlugins\yandexTranslate\__init__.py:451 +msgid "No text to translate" +msgstr "Нет текста для перевода" + +#: addon\globalPlugins\yandexTranslate\__init__.py:414 msgid "Translates the selected text." msgstr "Переводит выделенный текст" -#: ../../../globalPlugins/yandexTranslate/__init__.py:369 +#: addon\globalPlugins\yandexTranslate\__init__.py:428 msgid "Translates the last spoken phrase" msgstr "Переводит последнюю произнесённую фразу" -#: ../../../globalPlugins/yandexTranslate/__init__.py:385 +#: addon\globalPlugins\yandexTranslate\__init__.py:438 msgid "Translates text from navigator object" msgstr "Переводит текст с объекта навигатора" -#: ../../../globalPlugins/yandexTranslate/__init__.py:394 +#: addon\globalPlugins\yandexTranslate\__init__.py:457 +#: addon\globalPlugins\yandexTranslate\__init__.py:470 msgid "Switching between the primary and secondary target language" msgstr "Переключает между первичным и вторичным целевым языком" -#: ../../../globalPlugins/yandexTranslate/__init__.py:400 +#: addon\globalPlugins\yandexTranslate\__init__.py:477 msgid "Copy to clipboard" msgstr "Скопировано в буфер обмена" -#: ../../../globalPlugins/yandexTranslate/__init__.py:402 +#: addon\globalPlugins\yandexTranslate\__init__.py:479 msgid "No translation to copy" msgstr "Нет перевода для копирования" -#: ../../../globalPlugins/yandexTranslate/__init__.py:403 +#: addon\globalPlugins\yandexTranslate\__init__.py:480 msgid "Copy last translation to clipboard" msgstr "Копирует последний перевод в буфер обмена" -#: ../../../globalPlugins/yandexTranslate/__init__.py:408 +#: addon\globalPlugins\yandexTranslate\__init__.py:485 msgid "Shows the settings dialog" msgstr "Показывает диалог настроек" -#: ../../../globalPlugins/yandexTranslate/__init__.py:412 +#: addon\globalPlugins\yandexTranslate\__init__.py:488 +msgid "Switches the function of automatic translation" +msgstr "Включает и выключает функцию автоматического перевода" + +#: addon\globalPlugins\yandexTranslate\__init__.py:493 msgid "Automatic translation enabled" msgstr "Автоматический перевод включён" -#: ../../../globalPlugins/yandexTranslate/__init__.py:416 +#: addon\globalPlugins\yandexTranslate\__init__.py:497 msgid "Automatic translation disabled" msgstr "Автоматический перевод выключен" -#: ../../../globalPlugins/yandexTranslate/__init__.py:417 -msgid "Switches the function of automatic translation" -msgstr "Включает и выключает функцию автоматического перевода" - -#: ../../../globalPlugins/yandexTranslate/languages.py:6 +#: addon\globalPlugins\yandexTranslate\languages.py:6 msgid "Afrikaans" msgstr "Африкаанс" -#: ../../../globalPlugins/yandexTranslate/languages.py:7 +#: addon\globalPlugins\yandexTranslate\languages.py:7 msgid "Amharic" msgstr "Амхарский" -#: ../../../globalPlugins/yandexTranslate/languages.py:8 +#: addon\globalPlugins\yandexTranslate\languages.py:8 msgid "Arabic" msgstr "Арабский" -#: ../../../globalPlugins/yandexTranslate/languages.py:9 +#: addon\globalPlugins\yandexTranslate\languages.py:9 msgid "Azerbaijani" msgstr "Азербайджанский" -#: ../../../globalPlugins/yandexTranslate/languages.py:10 +#: addon\globalPlugins\yandexTranslate\languages.py:10 msgid "Bashkir" msgstr "Башкирский" -#: ../../../globalPlugins/yandexTranslate/languages.py:11 +#: addon\globalPlugins\yandexTranslate\languages.py:11 msgid "Belarusian" msgstr "Белорусский" -#: ../../../globalPlugins/yandexTranslate/languages.py:12 +#: addon\globalPlugins\yandexTranslate\languages.py:12 msgid "Bulgarian" msgstr "Болгарский" -#: ../../../globalPlugins/yandexTranslate/languages.py:13 +#: addon\globalPlugins\yandexTranslate\languages.py:13 msgid "Bengali" msgstr "Бенгальский" -#: ../../../globalPlugins/yandexTranslate/languages.py:14 +#: addon\globalPlugins\yandexTranslate\languages.py:14 msgid "Bosnian" msgstr "Боснийский" -#: ../../../globalPlugins/yandexTranslate/languages.py:15 +#: addon\globalPlugins\yandexTranslate\languages.py:15 msgid "Catalan" msgstr "Каталонский" -#: ../../../globalPlugins/yandexTranslate/languages.py:16 +#: addon\globalPlugins\yandexTranslate\languages.py:16 msgid "Cebuano" msgstr "Себуанский" -#: ../../../globalPlugins/yandexTranslate/languages.py:17 +#: addon\globalPlugins\yandexTranslate\languages.py:17 msgid "Czech" msgstr "Чешский" -#: ../../../globalPlugins/yandexTranslate/languages.py:18 +#: addon\globalPlugins\yandexTranslate\languages.py:18 msgid "Chuvash" msgstr "Чувашский" -#: ../../../globalPlugins/yandexTranslate/languages.py:19 +#: addon\globalPlugins\yandexTranslate\languages.py:19 msgid "Welsh" msgstr "Валлийский" -#: ../../../globalPlugins/yandexTranslate/languages.py:20 +#: addon\globalPlugins\yandexTranslate\languages.py:20 msgid "Danish" msgstr "Датский" -#: ../../../globalPlugins/yandexTranslate/languages.py:21 +#: addon\globalPlugins\yandexTranslate\languages.py:21 msgid "German" msgstr "Немецкий" -#: ../../../globalPlugins/yandexTranslate/languages.py:22 +#: addon\globalPlugins\yandexTranslate\languages.py:22 msgid "Greek" msgstr "Греческий" -#: ../../../globalPlugins/yandexTranslate/languages.py:23 +#: addon\globalPlugins\yandexTranslate\languages.py:23 msgid "English" msgstr "Английский" -#: ../../../globalPlugins/yandexTranslate/languages.py:24 +#: addon\globalPlugins\yandexTranslate\languages.py:24 msgid "Esperanto" msgstr "Эсперанто" -#: ../../../globalPlugins/yandexTranslate/languages.py:25 +#: addon\globalPlugins\yandexTranslate\languages.py:25 msgid "Spanish" msgstr "Испанский" -#: ../../../globalPlugins/yandexTranslate/languages.py:26 +#: addon\globalPlugins\yandexTranslate\languages.py:26 msgid "Estonian" msgstr "Эстонский" -#: ../../../globalPlugins/yandexTranslate/languages.py:27 +#: addon\globalPlugins\yandexTranslate\languages.py:27 msgid "Basque" msgstr "Баскский" -#: ../../../globalPlugins/yandexTranslate/languages.py:28 +#: addon\globalPlugins\yandexTranslate\languages.py:28 msgid "Persian" msgstr "Персидский" -#: ../../../globalPlugins/yandexTranslate/languages.py:29 +#: addon\globalPlugins\yandexTranslate\languages.py:29 msgid "Finnish" msgstr "Финский" -#: ../../../globalPlugins/yandexTranslate/languages.py:30 +#: addon\globalPlugins\yandexTranslate\languages.py:30 msgid "French" msgstr "Французский" -#: ../../../globalPlugins/yandexTranslate/languages.py:31 +#: addon\globalPlugins\yandexTranslate\languages.py:31 msgid "Irish" msgstr "Ирландский" -#: ../../../globalPlugins/yandexTranslate/languages.py:32 +#: addon\globalPlugins\yandexTranslate\languages.py:32 msgid "Scottish Gaelic" msgstr "Гэльский (шотландский)" -#: ../../../globalPlugins/yandexTranslate/languages.py:33 +#: addon\globalPlugins\yandexTranslate\languages.py:33 msgid "Galician" msgstr "Галисийский" -#: ../../../globalPlugins/yandexTranslate/languages.py:34 +#: addon\globalPlugins\yandexTranslate\languages.py:34 msgid "Gujarati" msgstr "Гуджарати" -#: ../../../globalPlugins/yandexTranslate/languages.py:35 +#: addon\globalPlugins\yandexTranslate\languages.py:35 msgid "Hebrew" msgstr "Иврит" -#: ../../../globalPlugins/yandexTranslate/languages.py:36 +#: addon\globalPlugins\yandexTranslate\languages.py:36 msgid "Hindi" msgstr "Хинди" -#: ../../../globalPlugins/yandexTranslate/languages.py:37 +#: addon\globalPlugins\yandexTranslate\languages.py:37 msgid "Croatian" msgstr "Хорватский" -#: ../../../globalPlugins/yandexTranslate/languages.py:38 +#: addon\globalPlugins\yandexTranslate\languages.py:38 msgid "Haitian" msgstr "Гаитянский" -#: ../../../globalPlugins/yandexTranslate/languages.py:39 +#: addon\globalPlugins\yandexTranslate\languages.py:39 msgid "Hungarian" msgstr "Венгерский" -#: ../../../globalPlugins/yandexTranslate/languages.py:40 +#: addon\globalPlugins\yandexTranslate\languages.py:40 msgid "Armenian" msgstr "Армянский" -#: ../../../globalPlugins/yandexTranslate/languages.py:41 +#: addon\globalPlugins\yandexTranslate\languages.py:41 msgid "Indonesian" msgstr "Индонезийский" -#: ../../../globalPlugins/yandexTranslate/languages.py:42 +#: addon\globalPlugins\yandexTranslate\languages.py:42 msgid "Icelandic" msgstr "Исландский" -#: ../../../globalPlugins/yandexTranslate/languages.py:43 +#: addon\globalPlugins\yandexTranslate\languages.py:43 msgid "Italian" msgstr "Итальянский" -#: ../../../globalPlugins/yandexTranslate/languages.py:44 +#: addon\globalPlugins\yandexTranslate\languages.py:44 msgid "Japanese" msgstr "Японский" -#: ../../../globalPlugins/yandexTranslate/languages.py:45 +#: addon\globalPlugins\yandexTranslate\languages.py:45 msgid "Javanese" msgstr "Яванский" -#: ../../../globalPlugins/yandexTranslate/languages.py:46 +#: addon\globalPlugins\yandexTranslate\languages.py:46 msgid "Georgian" msgstr "Грузинский" -#: ../../../globalPlugins/yandexTranslate/languages.py:47 +#: addon\globalPlugins\yandexTranslate\languages.py:47 msgid "Kazakh" msgstr "Казахский" -#: ../../../globalPlugins/yandexTranslate/languages.py:48 +#: addon\globalPlugins\yandexTranslate\languages.py:48 msgid "Khmer" msgstr "Кхмерский" -#: ../../../globalPlugins/yandexTranslate/languages.py:49 +#: addon\globalPlugins\yandexTranslate\languages.py:49 msgid "Kannada" msgstr "Каннада" -#: ../../../globalPlugins/yandexTranslate/languages.py:50 +#: addon\globalPlugins\yandexTranslate\languages.py:50 msgid "Korean" msgstr "Корейский" -#: ../../../globalPlugins/yandexTranslate/languages.py:51 +#: addon\globalPlugins\yandexTranslate\languages.py:51 msgid "Kyrgyz" msgstr "Киргизский" -#: ../../../globalPlugins/yandexTranslate/languages.py:52 +#: addon\globalPlugins\yandexTranslate\languages.py:52 msgid "Latin" msgstr "Латинский" -#: ../../../globalPlugins/yandexTranslate/languages.py:53 +#: addon\globalPlugins\yandexTranslate\languages.py:53 msgid "Luxembourgish" msgstr "Люксембургский" -#: ../../../globalPlugins/yandexTranslate/languages.py:54 +#: addon\globalPlugins\yandexTranslate\languages.py:54 msgid "Lao" msgstr "Лаосский" -#: ../../../globalPlugins/yandexTranslate/languages.py:55 +#: addon\globalPlugins\yandexTranslate\languages.py:55 msgid "Lithuanian" msgstr "Литовский" -#: ../../../globalPlugins/yandexTranslate/languages.py:56 +#: addon\globalPlugins\yandexTranslate\languages.py:56 msgid "Latvian" msgstr "Латышский" -#: ../../../globalPlugins/yandexTranslate/languages.py:57 +#: addon\globalPlugins\yandexTranslate\languages.py:57 msgid "Malagasy" msgstr "Малагасийский" -#: ../../../globalPlugins/yandexTranslate/languages.py:58 +#: addon\globalPlugins\yandexTranslate\languages.py:58 msgid "Mari" msgstr "Марийский" -#: ../../../globalPlugins/yandexTranslate/languages.py:59 +#: addon\globalPlugins\yandexTranslate\languages.py:59 msgid "Maori" msgstr "Маори" -#: ../../../globalPlugins/yandexTranslate/languages.py:60 +#: addon\globalPlugins\yandexTranslate\languages.py:60 msgid "Macedonian" msgstr "Македонский" -#: ../../../globalPlugins/yandexTranslate/languages.py:61 +#: addon\globalPlugins\yandexTranslate\languages.py:61 msgid "Malayalam" msgstr "Малаялам" -#: ../../../globalPlugins/yandexTranslate/languages.py:62 +#: addon\globalPlugins\yandexTranslate\languages.py:62 msgid "Mongolian" msgstr "Монгольский" -#: ../../../globalPlugins/yandexTranslate/languages.py:63 +#: addon\globalPlugins\yandexTranslate\languages.py:63 msgid "Marathi" msgstr "Маратхи" -#: ../../../globalPlugins/yandexTranslate/languages.py:64 +#: addon\globalPlugins\yandexTranslate\languages.py:64 msgid "Hill Mari" msgstr "Горномарийский" -#: ../../../globalPlugins/yandexTranslate/languages.py:65 +#: addon\globalPlugins\yandexTranslate\languages.py:65 msgid "Malay" msgstr "Малайский" -#: ../../../globalPlugins/yandexTranslate/languages.py:66 +#: addon\globalPlugins\yandexTranslate\languages.py:66 msgid "Maltese" msgstr "Мальтийский" -#: ../../../globalPlugins/yandexTranslate/languages.py:67 +#: addon\globalPlugins\yandexTranslate\languages.py:67 msgid "Burmese" msgstr "Бирманский" -#: ../../../globalPlugins/yandexTranslate/languages.py:68 +#: addon\globalPlugins\yandexTranslate\languages.py:68 msgid "Nepali" msgstr "Непальский" -#: ../../../globalPlugins/yandexTranslate/languages.py:69 +#: addon\globalPlugins\yandexTranslate\languages.py:69 msgid "Dutch" msgstr "Голландский" -#: ../../../globalPlugins/yandexTranslate/languages.py:70 +#: addon\globalPlugins\yandexTranslate\languages.py:70 msgid "Norwegian" msgstr "Норвежский" -#: ../../../globalPlugins/yandexTranslate/languages.py:71 +#: addon\globalPlugins\yandexTranslate\languages.py:71 msgid "Punjabi" msgstr "Панджаби" -#: ../../../globalPlugins/yandexTranslate/languages.py:72 +#: addon\globalPlugins\yandexTranslate\languages.py:72 msgid "Papiamento" msgstr "Папьяменто" -#: ../../../globalPlugins/yandexTranslate/languages.py:73 +#: addon\globalPlugins\yandexTranslate\languages.py:73 msgid "Polish" msgstr "Польский" -#: ../../../globalPlugins/yandexTranslate/languages.py:74 +#: addon\globalPlugins\yandexTranslate\languages.py:74 msgid "Portuguese" msgstr "Португальский" -#: ../../../globalPlugins/yandexTranslate/languages.py:75 +#: addon\globalPlugins\yandexTranslate\languages.py:75 msgid "Romanian" msgstr "Румынский" -#: ../../../globalPlugins/yandexTranslate/languages.py:76 +#: addon\globalPlugins\yandexTranslate\languages.py:76 msgid "Russian" msgstr "Русский" -#: ../../../globalPlugins/yandexTranslate/languages.py:77 +#: addon\globalPlugins\yandexTranslate\languages.py:77 msgid "Sinhalese" msgstr "Сингальский" -#: ../../../globalPlugins/yandexTranslate/languages.py:78 +#: addon\globalPlugins\yandexTranslate\languages.py:78 msgid "Slovak" msgstr "Словацкий" -#: ../../../globalPlugins/yandexTranslate/languages.py:79 +#: addon\globalPlugins\yandexTranslate\languages.py:79 msgid "Slovenian" msgstr "Словенский" -#: ../../../globalPlugins/yandexTranslate/languages.py:80 +#: addon\globalPlugins\yandexTranslate\languages.py:80 msgid "Albanian" msgstr "Албанский" -#: ../../../globalPlugins/yandexTranslate/languages.py:81 +#: addon\globalPlugins\yandexTranslate\languages.py:81 msgid "Serbian" msgstr "Сербский" -#: ../../../globalPlugins/yandexTranslate/languages.py:82 +#: addon\globalPlugins\yandexTranslate\languages.py:82 msgid "Sundanese" msgstr "Сунданский" -#: ../../../globalPlugins/yandexTranslate/languages.py:83 +#: addon\globalPlugins\yandexTranslate\languages.py:83 msgid "Swedish" msgstr "Шведский" -#: ../../../globalPlugins/yandexTranslate/languages.py:84 +#: addon\globalPlugins\yandexTranslate\languages.py:84 msgid "Swahili" msgstr "Суахили" -#: ../../../globalPlugins/yandexTranslate/languages.py:85 +#: addon\globalPlugins\yandexTranslate\languages.py:85 msgid "Tamil" msgstr "Тамильский" -#: ../../../globalPlugins/yandexTranslate/languages.py:86 +#: addon\globalPlugins\yandexTranslate\languages.py:86 msgid "Telugu" msgstr "Телугу" -#: ../../../globalPlugins/yandexTranslate/languages.py:87 +#: addon\globalPlugins\yandexTranslate\languages.py:87 msgid "Tajik" msgstr "Таджикский" -#: ../../../globalPlugins/yandexTranslate/languages.py:88 +#: addon\globalPlugins\yandexTranslate\languages.py:88 msgid "Thai" msgstr "Тайский" -#: ../../../globalPlugins/yandexTranslate/languages.py:89 +#: addon\globalPlugins\yandexTranslate\languages.py:89 msgid "Tagalog" msgstr "Тагальский" -#: ../../../globalPlugins/yandexTranslate/languages.py:90 +#: addon\globalPlugins\yandexTranslate\languages.py:90 msgid "Turkish" msgstr "Турецкий" -#: ../../../globalPlugins/yandexTranslate/languages.py:91 +#: addon\globalPlugins\yandexTranslate\languages.py:91 msgid "Tatar" msgstr "Татарский" -#: ../../../globalPlugins/yandexTranslate/languages.py:92 +#: addon\globalPlugins\yandexTranslate\languages.py:92 msgid "Udmurt" msgstr "Удмуртский" -#: ../../../globalPlugins/yandexTranslate/languages.py:93 +#: addon\globalPlugins\yandexTranslate\languages.py:93 msgid "Ukrainian" msgstr "Украинский" -#: ../../../globalPlugins/yandexTranslate/languages.py:94 +#: addon\globalPlugins\yandexTranslate\languages.py:94 msgid "Urdu" msgstr "Урду" -#: ../../../globalPlugins/yandexTranslate/languages.py:95 +#: addon\globalPlugins\yandexTranslate\languages.py:95 msgid "Uzbek" msgstr "Узбекский" -#: ../../../globalPlugins/yandexTranslate/languages.py:96 +#: addon\globalPlugins\yandexTranslate\languages.py:96 msgid "Vietnamese" msgstr "Вьетнамский" -#: ../../../globalPlugins/yandexTranslate/languages.py:97 +#: addon\globalPlugins\yandexTranslate\languages.py:97 msgid "Xhosa" msgstr "Коса" -#: ../../../globalPlugins/yandexTranslate/languages.py:98 +#: addon\globalPlugins\yandexTranslate\languages.py:98 msgid "Yiddish" msgstr "Идиш" -#: ../../../globalPlugins/yandexTranslate/languages.py:99 +#: addon\globalPlugins\yandexTranslate\languages.py:99 msgid "Chinese" msgstr "Китайский" +#. Add-on summary, usually the user visible name of the addon. +#. Translators: Summary for this add-on to be shown on installation and add-on information. +#: buildVars.py:17 +msgid "Yandex translator for NVDA" +msgstr "Яндекс переводчик для NVDA" + +#. Add-on description +#. Translators: Long description to be shown for this add-on on add-on information from add-ons manager +#: buildVars.py:20 +msgid "Translates text using service Yandex Translate." +msgstr "Переводит текст с помощью сервиса Яндекс Переводчик." + #~ msgid "" #~ "Translates the selected text. If there is no selection, it translates " #~ "text from the clipboard" @@ -590,12 +635,6 @@ msgstr "Китайский" #~ "Переводит выделенный текст. При отсутствии выделения, переводит текст из " #~ "буфера обмена" -#~ msgid "Yandex translator for NVDA" -#~ msgstr "Яндекс переводчик для NVDA" - -#~ msgid "Translates text using service Yandex Translate." -#~ msgstr "Переводит текст с помощью сервиса Яндекс Переводчик." - #~ msgid "API key:" #~ msgstr "Ключ API:" diff --git a/addon/locale/ru/manifest.ini b/addon/locale/ru/manifest.ini index 145b691..48b11db 100644 --- a/addon/locale/ru/manifest.ini +++ b/addon/locale/ru/manifest.ini @@ -1,2 +1,2 @@ -summary = "Yandex translator for NVDA" -description = """Translates text using service Yandex Translate.""" +summary = "Яндекс переводчик для NVDA" +description = """Переводит текст с помощью сервиса Яндекс Переводчик.""" diff --git a/addon/manifest.ini b/addon/manifest.ini index 44fca55..32df1dd 100644 --- a/addon/manifest.ini +++ b/addon/manifest.ini @@ -3,8 +3,8 @@ summary = "Yandex translator for NVDA" description = """Translates text using service Yandex Translate.""" author = "alekssamos " url = https://github.com/alekssamos/YandexTranslate/ -version = 2021.09.14 -docFileName = readme.html +version = 2021.10.05 +docFileName = readme2.html minimumNVDAVersion = 2019.3 lastTestedNVDAVersion = 2021.1 updateChannel = None diff --git a/buildVars.py b/buildVars.py index 4532886..c85e29e 100644 --- a/buildVars.py +++ b/buildVars.py @@ -19,13 +19,13 @@ # Translators: Long description to be shown for this add-on on add-on information from add-ons manager "addon_description": _("""Translates text using service Yandex Translate."""), # version - "addon_version": "2021.09.14", + "addon_version": "2021.10.05", # Author(s) "addon_author": u"alekssamos ", # URL for the add-on documentation support "addon_url": "https://github.com/alekssamos/YandexTranslate/", # Documentation file name - "addon_docFileName": "readme.html", + "addon_docFileName": "readme2.html", # Minimum NVDA version supported (e.g. "2018.3.0", minor version is optional) "addon_minimumNVDAVersion": 2019.3, # Last NVDA version supported/tested (e.g. "2018.4.0", ideally more recent than minimum version)