Vertaler — кросс платформенный переводчик

6 Окт
2011

Vertaler — переводчик с открытым исходным кодом, позволяющий переводить любой текст в любом приложении, используя Google Translate и Bing Translator.

Преамбула


Изначально программа задумывалась как альтернатива Google Translate Client в Linux. Уже давно пользуюсь этим переводчиком в windows и очень не хватало аналога под linux, все существующие переводчики меня не устраивали в плане функционала и интерфейса.
Пол года назад решил заняться изучением прекрасного языка Python. Попробовал, почитал умные книжки и решил, что лучшее обучение это практика, после чего решил написать программу-переводчик наподобие Google Translate Client.
И вот первая рабочая версия готова, чем и спешу поделиться, заодно выслушать критику, советы и попросить помощи в создании инсталяционных пакетов для linux.

Функционал


  • Версия для Windows и Linux
  • Поддержка более 30 языков
  • Перевод с помощью Google Translate или Bing Translator на выбор
  • Автоматическое определение исходного языка с помощью Bing API
  • Использование горячих клавиш (зажать Ctrl при выделении текста или после выделения два раза нажать на Ctrl)
  • Автоматическая проверка новых версий (только в windows)
  • Запуск вместе с ОС (только в windows)
  • Мультиязычный интерфейс, пока только английский и русский, программа сама определяет локаль ОС, изменить язык в настройках программы пока нельзя


Описание интерфейсов



Это основное окно программы, здесь можно вставить любой текст и перевести его. Также отсюда можно открыть настройки программы и выбрать основные языки для перевода.

Меню иконки на панели задач, здесь можно выбрать способ появления всплывающего окна, а также открыть настройки программы и окно «О программе».

Всплывающее окно появится, когда вы выберите текст, нажав при это на Ctrl, если это прописано в настройках. В этом окне вы можете нажать кнопку перевода текста, скопировать выделенный текст, также нажать кнопку поиска и откроется браузер с ранее выбранной в настройках программы службой поиска, а также открыть главное окно программы, при этом выделенный текст окажется в нем.

Это окно появляется, если нажать на кнопку перевода в всплывающем окне. Здесь можно выбрать другой язык для перевода и скопировать переведенный текст.

В настройках программы можно выбрать способ появления всплывающего окна, сервис поиска, запускать программу вместе с windows или нет, выбрать сервис для перевода, настройки прокси, проверять наличие новых версий программы или нет.

Здесь можно выбрать основные языки для перевода, которые затем будут отображаться наверху списка.

Что же внутри, и как все это работает


Язык разработки Python, интерфейс построен с помощью кросс-платформенной библиотеки wxPython.
Алгоритм работы программы в windows

С помощью библиотеки pyhook отслеживаются двойные и долгие нажатия левой кнопки мыши, а также нажатия кнопки ctrl, после чего появляется ранее описанное всплывающее окно. При нажатии на кнопку перевода происходит следующее магическое действо. С помощью winapi сохраняется содержимое буфера обмена и посылается команда ctrl+c, выделенный текст при этом помещается в освободившийся буфер и от туда записывается в переменную, затем идет обратный процесс, сохраненное значение буфера обратно возвращается на законное место. Ну и после этого посылается и обрабатывается запрос для перевода текста. К сожалению в windows, а точнее в winapi отсутствует возможность напрямую взаимодействовать с выделенным текстом, как это реализовано в posix системах (см. X Window selection).
Алгоритм работы программы в linux

Для linux в качестве аналога pyhook выступил замечательный модуль приложения PyKeylogger — pyxhook, в модуле использована только библиотека python-xlib, что является большим плюсом, практически все, что находил подобное, использовало библиотеку gtk. С помощью pyxhook также, как и в windows отслеживаются нажатия кнопки мыши и ctrl. Выделенный текст забирается с помощью консольной утилиты xsel. Затем этот текст переводится.
Сервисы перевода

Для доступа к Bing Translator и автоматическому определению исходного языка используется Bing API.
Для доступа к Google Translate используется неофициальное API, надеюсь оно и в дальнейшем останется доступным.

Что планирую реализовать в дальнейшем


  • Версия для MacOS
  • Озвучка текста
  • Проверка орфографии с помощью сервиса Яндекс.Спеллер
  • Ну и исправление ошибок

Помощь сообщества


Необходима помощь в создании инсталяционных пакетов для Linux. Пытался в этом разобраться, но из-за нехватки времени (переезд в другой город, поиск работы, переход из разряда холостяков в разряд окольцованных) решил пока отложить этот вопрос. Пользоваться программой в linux можно просто скачав исходники, при наличии python версии выше 2.5 и установив необходимые пакеты, описанные на сайте.

Заключение


На данный момент программа может иметь некоторые баги, куда же без них. Один из выявленных мной, это не всегда отжимается клавиша ctrl, если переводить с помощью двойного нажатия ctrl, данный баг появляется редко и причину его появления я так и не нашел.
Код необходимо привести в надлежащий вид, но на это сейчас также нет времени.
Я не знаю какое максимальное количество символов можно переводить, не нашел данной информации, поэтому могут быть сюрпризы.
Жду отзывов и предложений.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх