Найти тему
Пикабу

Перевод выделенного фрагмента текста в Ubuntu

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

И оно действительно есть - если гуглить что-то типа "перевод выделенного фрагмента текста линукс", то получаем ссылки на некоторое количество скриптов, которые делают примерно следующее: с помощью программы "xsel" они дергают выделенный кусок в буфер обмена, шлют его через мозиллу на яндекс, там получают перевод, и публикуют его на экране с помощью извещалки "notify-send" из пакета "libnotify-bin" на экране.

Я их попробовал. И столкнулся с 2-мя эффектами. Первое - мозилла после нескольких лет использования у меня загружается минут 5, как это вылечить, я не нагуглил, и благополучно на нее забил, пользуясь хромиумом; однако, когда древнее зло пришлось ворочать, оно, как и прежде, включалось бесконечно долго. Второе - скрипт после прогрузки мозиллы все равно не работал. Из того, что публиковалось в интернетах, я понял, что его периодически перепиливали, возможно, по причине изменений в апи яндекса, возможно - почему-то еще. В общем, не взлетело.

Однако, проблема-то осталась - хочу читать и пользоваться словарем как белый человек. Из опыта использования чужих скриптов я узнал, что в природе есть "xsel" для работы с буфером обмена и "notify-send" для плевания сообщениями на экран. Для полного счастья нужен был консольный словарь. Собственно,translate-shell", прошу любить и жаловать, командой типа "trans whatever" получаем в консоли перевод откуда-то из интернетов, судя по аннотации - откуда-то из гугла или яндекса, факт тот, что работает и без заморочек.

Устанавливаем пакеты через консоль:

sudo apt-get install translate-shell libnotify-bin xsel

Слепляем все это в баш-скрипт (создаем текстовой файл типа dict.sh или как там вы его обзовете), вешаем на него аттрибут "исполняемый" (я делал через графический интерфейс, но месье могут и через chmod).

В скрипте пишем:

#! /bin/bash

xsel -i -b;

clipboard="$ (xsel -o);

result="$ (trans -b $clipboard);

notify-send -t 10000 --icon=info "$result";

Что означает:

#! /bin/bash - Это баш-скрипт

xsel -i -b; - Скопировать выделенное в буфер обмена

clipboard="$ (xsel -o); - Записать содержимое буфера в строковую переменную

result="$ (trans -b $clipboard); - Перевести что-там-было-в-буфере trans`ом и записать в строковую переменную; параметр -b означает, что результатом будет одно слово, скорее всего, подходящее для перевода "по-быстрому"; если параметр снять, то вывалятся все варианты, но, во-первых - на экран некоторые символы выводятся с ошибками, во-вторых - мне портянка текста не нужна, обычно достаточно одного слова

notify-send -t 10000 --icon=info "$result"; - Отослать результат перевода на экран; параметр -t 10000 отвечает за то, сколько времени будт висеть полученное уведомление на экране, параметр --icon=info указывает иконку сбоку от уведомления.

Далее. У нас уже есть установленные три пакета, файл со скриптом написан и он помечен как исполняемый. Заходим в настройки клавиатуры, добавляем на нее новое сочетание горячих клавиш, в качестве исполняемой программы указываем наш скрипт с путем к нему. Выделяем слово на ангельском в любом окне, тыкаем назначенную кнопку - вуаля.

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

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц