Перевод любого выделенного текста с помощью горячих клавиш и уведомлений

Недавно я натолкнулся на старый небольшой интересный скрипт, позволяющий переводить любой выделенный текст. Нужно всего лишь выделить текст, неважно, будь то в браузере, LibreOffice или в документе PDF и нажать на клавиатуре определенное сочетание клавиш — и вуаля! — перевод выделенного текста появится в уведомлении на рабочем столе.

Исходный скрипт, написанный в 2012 году, к сожалению, уже не работает, однако ниже представлена его исправленная, работоспособная версия.

По-настоящему полезным этот скрипт делает то, что вы можете получить перевод любого выделенного текста, в браузере, документе ODT или PDF, терминале и т. д. и для его выполнения вы можете назначить любое удобное вам сочетание клавиш.

Скрипт отлично работает при переводе отдельных слов или небольших фраз, однако не ждите от него хорошего перевода целой веб-страницы, всё же для этого есть другие инструменты.

Есть и другие минусы. Если Google не сможет распознать язык оригинала, то будет возвращена ошибка, таким образом текст переведён не будет. Кроме того, естественно, для работы скрипта необходимо соединение с интернетом.

Несмотря на это, скрипт может быть весьма и весьма полезен в самых разных ситуациях. После его установки и настройки вы заметите, насколько просто и быстро можно переводить незнакомые вам фразы с французского, английского, испанского, итальянского и любого другого языка, поддерживаемого Google Translate.


Установка и настройка скрипта перевода выделенного текста

  • Для использования скрипта вначале нужно установить пакеты libnotify-bin (благодаря ему скрипт сможет отображать уведомления на рабочем столе), wget (для получения перевода от Google) и xsel (нужен для извлечения выделенного текста). В Ubuntu, Linux Mint, и т. п. вы можете установить эти пакеты с помощью команды в терминале:
sudo apt-get install libnotify-bin wget xsel
  • После установки скопируйте код скрипта:
 
 #!/usr/bin/env bash 
    notify-send --icon=info "$(xsel -o)" "$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=$(xsel -o | sed "s/[\"'<>]//g")" | sed "s/,,,0]],,.*//g" | awk -F'"' '{print $2, $6}')"

и вставьте его в новый файл — давайте назовём его notitrans (на самом деле вы можете обозвать его как пожелаете, но далее будет использоваться именно это имя).
В тексте скрипта, приведенном выше, замените «tl=en» на обозначение языка, в котором вы хотели бы получать результат перевода, например «tl=ru» для русского языка, «tl=fr» для французского и т. д. Теперь сохраните файл в домашнем каталоге и сделайте его исполняемым с помощью следующей команды:

chmod +x ~/notitrans
  • Переместите скрипт в каталог, содержащейся в переменной $PATH — например, для перемещения скрипта в каталог /usr/local/bin/, воспользуйтесь следующей командой:
sudo mv ~/notitrans /usr/local/bin/
  1. Для использования скрипта необходимо, чтобы он выполнялся по какому-либо сочетанию клавиш. Необходимые для этого действия будут зависеть от того, какое окружение рабочего стола вы используете.

В GNOME (и Unity) это можно сделать перейдя в System Settings > Keyboard > Shortcuts > Custom Shortcuts и нажав «+» для добавления нового сочетания клавиш. Введите любое название нового пользовательского сочетания клавиш и notitrans в качестве команды для выполнения:

Назначьте новой команде сочетание клавиш, щёлкнув на ней и нажав выбранные вами клавиши на клавиатуре. Убедитесь в том, что это сочетание клавиш уже не занято!

Дополнительно: изменение скрипта «перевод выделенного текста»

Приведенный выше скрипт очень легко изменить для того, чтобы он лучше соответствовал вашим нуждам. Далее приводится несколько изменений, которые вы можете взять за основу и изменять дальше сами. Для использования скриптов, приведенных ниже, выполните те же действия, как и для «оригинального» скрипта (включая изменение кода языка en на требуемый вам язык), но не копируйте код скрипта из второго шага, вместо этого, воспользуйтесь кодом, приведенным ниже.

Отображение перевода с помощью Zenity (позволяет скопировать текст), вместо использования уведомлений рабочего стола:

    #!/usr/bin/env bash
    text="$(xsel -o)"
    translate="$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=$(echo $text | sed "s/[\"'<>]//g")" | sed "s/,,,0]],,.*//g" | awk -F'"' '{print $2, $6}')"
    echo -e "Original text:" "$text"'\n' > /tmp/notitrans
    echo "Translation:" "$translate" >> /tmp/notitrans
    zenity --text-info --title="Translation" --filename=/tmp/notitrans

Для того, чтобы этот вариант работал, в системе должен быть установлен пакет zenity. Чтобы установить его в Debian/Ubuntu, используйте следующую команду:

sudo apt-get install zenity

Отображение перевода в уведомлении рабочего стола и автоматическое копирование перевода в буфер обмена:

    #!/usr/bin/env bash
    text="$(xsel -o)"
    translate="$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=$(echo $text | sed "s/[\"'<>]//g")" | sed "s/,,,0]],,.*//g" | awk -F'"' '{print $2, $6}')"
    echo "$translate" | xclip -selection clipboard
    notify-send --icon=info "$text" "$translate"

Для этого варианта необходим пакет xclip. В Debian/Ubuntu установить его можно с помощью команды:

sudo apt-get install xclip