Скрипт для перевода выделенного текста с помощью яндекса

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

Хочется сразу отметить из плюсов данного скрипта то, что он переводит намного более длинные фразы, в отличие от гугловского. А качество перевода… конечно художественную литературу переводить не рекомендуется, но непонятные фразы — вполне.

Скрипт не сильно большой, но выкладывать его полностью не буду (если хотите, то вверху ссылка на статью на хабре). Его проще можно скачать командой:

wget http://dl.dropbox.com/u/24844052/tuksik/transya

И заодно делать его исполняемым:

chmod +x transya

Теперь устанавливаем пакет xclip, который будет заниматься тем, что помещать выделенный текст в переменную.

sudo apt-get install xclip

Остаётся только забить его на сочетание клавиш. Это можно сделать средствами самой системы (например, в «клавиатуре» в mint и ubuntu) или через xbindkeys (универсальный способ для всех дистрибутивов).

Кстати, если не нравится, что появляется окно с оригинальным текстом (мол, вы точно это хотите перевести?), то просто замените строчку

text=$(${_zenity} --title  "Enter text" --entry --entry-text="$(xclip -o)" )

на

text=`(xclip -o)`

И тогда перевод будет быстрый, без лишних нажатий.

Поделись статьёй с друзьями

Или просто поиграйся с кнопочками

5 комментариев на «Скрипт для перевода выделенного текста с помощью яндекса»

  1. asa:

    xclip все же надо установить сначала

  2. asa:

    В новом дистрибутиве 12.04 64 bit скрипт работает как то через раз, а если переключишься на русскую раскладку то вообще не работает.

  3. asa:

    Вру все работает, что было не знаю.

  4. ALPom:

    В скрипте нужно после команды sed следующей строкой добавить sed -i ‘s/\\n/\n/g’ ${_out}
    Иначе он выводит переведенный текст сплошным текстом без абзацев, а вместо абзацев выводит значек \n.

Добавить комментарий