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

Идея в следующем: по горячей клавише (клавишам) получить из буфера обмена текст, перевести и показать в окне. Оригинальная разработка здесь (для KDE). Я использую DE c библиотеками Gnome, так что и действовать буду соответственно.
Нам понадобится:
программа xsel для работы с буфером обмена. Чаще всего она идет в составе дистрибутива, поэтому для установки достаточно обычного
sudo apt-get install xsel
/yay xsel
и так далее;translate-shell, программа-переводчик для командной строки. Ну, или интерфейс Google-переводчика для CLI. Формально это скрипт, но у меня язык не поворачивается так его назвать:)
- если самая свежая версия не нужна, просто поставим его из репозиториев системы:
sudo apt-get install translate-shell
; - актуальную версию скачаем и установим из интернета:
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+буква срабатывает не всегда, в зависимости от текущего языка.
На этом все: выделяем фрагмент текста в любом окне, нажимаем хоткей и читаем.
Комментарии
Вовремя под руку попался )
Обрати пожалуйста внимание в коде на формат кавычек, а то все вперемешку )
RSS лента комментариев этой записи