Удобный и универсальный переводчик в Linux

Перевести кусок мануала из консоли или страницу в браузере скриптом из пяти строк вполне реально. И очень удобно.

Примеры работы переводчика в Mate

Идея в следующем: по горячей клавише (клавишам) получить из буфера обмена текст, перевести и показать в окне. Оригинальная разработка здесь (для KDE). Я использую DE c библиотеками Gnome, так что и действовать буду соответственно.

Нам понадобится:

  1. программа xsel для работы с буфером обмена. Чаще всего она идет в составе дистрибутива, поэтому для установки достаточно обычного sudo apt-get install xsel;

  2. translate-shell, программа-переводчик для командной строки. Ну, или интерфейс Google-переводчика для CLI. Формально это скрипт, но у меня язык не поворачивается так его назвать:)

    1. если самая свежая версия не нужна, просто поставим его из репозиториев системы: sudo apt-get install translate-shell;
    2. актуальную версию скачаем и установим из интернета: wget git.io/trans && chmod +x ./trans && sudo cp -v trans /usr/bin/ && rm trans
      Примечание: можно заметить, что выше приведена не одна команда, а их цепочка, разделенная символами &&, что в данном случае означает «если предыдущая команда выполнена без ошибок».

Проверим, всё ли работает, как положено. Попутно замечу, что буфер обмена «как в Windows» (он же clipboard) и тот буфер обмена, которым xsel пользуется по умолчанию — разные. Если вам понадобится отправить (или достать) с его помощью что-то в clipboard, чтобы вставить потом, например, в OpenOffice, то используйте ключ -b. Возвращаясь к проверке, вот набор команд в консоли:

Создаем файл trtest.txt c текстом "Hello, world" (так как xsel работает только со стандартным вводом, так будет проще)
echo "Hello, world" > trtest.txt

Направляем текст из файла в буфер
xsel -i < trtest.txt

Достаем из буфера и передаем в trans для перевода
xsel -o | trans
Тут мы должны увидеть в консоли "Привет, мир" (и много чего другого)

Удаляем файл
rm trtest.txt

Проверяем, установлен ли zenity
zenity --help
Если нет, устанавливаем: sudo apt-get zenity

Если во время проверки ошибок не появилось, значит, мы почти у финиша. Можно писать скрипт:

#!/bin/sh

Имя файла с переведенным фрагментом будет состоять из префикса trans и числа секунд на данный момент (так мы сможем одновременно держать в каталоге /temp несколько файлов с переводом, вдруг понадобится)
fileName="/tmp/trans"$(date +%s)".txt"

Текст из буфера пересылаем переводчику с указанием сохранить результат в файл с предварительно сгенеренным именем
xsel -o | trans :ru -no-ansi -b -o $fileName

Вызываем диалоговое окно размером 640×480 px и передаем имя нашего файла в качестве текста сообщения
zenity --width=640 --height=480 --title="Перевод" --text-info --filename=$fileName

Убираем за собой :)
rm $fileName

exit 0

Остались мелочи: сохранить скрипт туда, где они у вас хранятся и присвоить ему право на выполнение (chmod +x имя_скрипта). А центре управления (параметры системы и т. д.) назначить горячую клавишу для вызова. Я привязал клавиши Win+F1, так как заметил, что Win+буква срабатывает не всегда, в зависимости от текущего языка.

На этом все: выделяем фрагмент текста в любом окне, нажимаем хоткей и читаем.

Метки: , , , ,

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


Защитный код
Обновить