Pull to refresh

Comments 9

Вот даже не знаю, с чего б я начал ревью. Допустим этот код хотим использовать в реальном серверном приложении (иначе зачем кэш на 100к разных ошибок?)

Текст ошибок потениально содержит пользовательские данные. Неконтролируемая отправка их в Google Translate - сторонний сервис в иностранной юрисдикции - грозит штрафами до 10 млн. рублей.

Приложение может быть развёрнуто в окружении, где файловая система - read only.

Чтение json-файла на 100к записей на каждую(!) ошибку - это очень медленно.

Цвета и прочий ascii art часто крайне мешают при интеграции с другими приложениями, такими как сборщики логов. Как и перевод, цвет лучше делать не силами приложеиня, а добавлять во всяких внешних графанах/sentry/...

Если 90% кода и ошибок написаны английскими словами, может быть стоит язык до уровня A2 подтянуть?

----

В целом хорошее упражнение для начала, но это именно упражнение. Использование в реальной работе этого гарантированно приведёт ко множеству возможностей набраться опыта.

Насчёт использования в продакшене — вы правы. В будущем попробую добавить локальный машинный перевод, чтобы все данные оставались в безопасности. Что касается ascii-арта и цвета — я сделал это для удобства, чтобы ошибка сразу бросалась в глаза, но проблему учту и добавлю возможность отключения заливки цветом. JSON заменю на SQLite для более быстрой обработки. Также предусмотрю обработку случаев с read-only хранилищем.

Столкнувшись с исключением, иногда не понимаешь: "divizion by zero" — что это? 

Как это что? Дивизион нулей это, вот что! Если на русский переводить. То есть имя им легион, и все нули.

Эскадрон барашков (ц) какой-то советский фильм

Изучать языки программирования без хотя бы базового английского – это как изучать химию без таблицы Менделеева или математику без таблицы умножения.

База есть база.

А если очень хочется прогать на русском языке, то welcome to 1C)))

А я думаю,что этот модуль будет очень полезным для меня. Навыки английского языка это хорошо, но хотелось бы упростить процесс работы. А можно подключить не Google Translate , а другой переводчик? К примеру, от Яндекса

Да, можно. Но у Яндекса нет бесплатного API, как у Гугла. Сначала нужно регистрироваться в Яндекс Облаке и создать платёжный аккаунт, там получить API-ключ и создать переменную окружения. В коде error_translator нужно заменить использование GoogleTranslator на YandexTranslator:

import sys
import warnings
import os
import json
import time
import re
from deep_translator import YandexTranslator

SOURCE_LANG = 'auto'
TARGET_LANG = 'ru'
CACHE_DIR = os.path.join(os.path.dirname(__file__), 'error_cache')
CACHE_FILE = os.path.join(CACHE_DIR, 'translations.json')
MAX_CACHE_ENTRIES = 100000

translator = YandexTranslator(source=SOURCE_LANG, target=TARGET_LANG)

Затем можно запускать translate_errors с выбранным скриптом для перевода ошибок, однако если не создать переменную окружения с API-ключом, будет вылезать что-то в этом духе:

Traceback (most recent call last):
  File "C:\Users\...\...\error-translator\translate_errors.py", line 1, in <module>
    TARGET = "test.py"; from run import run_target; run_target(TARGET)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\...\...\error-translator\run.py", line 11, in <module>
    from error_translator import cached_translate
  File "C:\Users\...\...\error-translator\error_translator.py", line 15, in <module>
    translator = YandexTranslator(source=SOURCE_LANG, target=TARGET_LANG)
  File "C:\Users\...\...\error-translator\.venv\Lib\site-packages\deep_translator\yandex.py", line 41, in __init__
    raise ApiKeyException(YANDEX_ENV_VAR)
deep_translator.exceptions.ApiKeyException: None --> 
You have to pass your api_key!
You can do this by passing the key as a parameter/argument to the translator class
or by setting the environment variable YANDEX_API_KEY

Example: export YANDEX_API_KEY="your_api_key"


Process finished with exit code 1

Я бы рекомендовал изучить вам документацию, возможно, там есть другие бесплатные переводчики. Но Яндекс пока только платно.

Чаще всего наоборот сталкиваюсь с тем, что приходится искать способ запуска приложений, которые мне нужно как-то отлаживать, в английской локали. Потому что русскоязычная часть интернета практически по всем ЯП/фреймворкам/библиотекам/инструментам настолько маленькая, что вероятность найти ответ на свою проблему, сформулированную на русском языке, стремится к нулю. Особенно с учётом все возрастающей скорости генерации новых инструментов. Просто скопипастить ошибку из лога на английском и в крайнем случае перевести в браузере через ПКМ намного проще. А лучше все же подтянуть язык для чтения технических текстов, это не так сложно. Ведь опять же, вся документация на английском. У Майков автоперевод в доках есть, иной раз такие перлы выдаёт, что и понять невозможно, о чем тут речь.

Sign up to leave a comment.

Articles