Перевод любого выделенного текста с помощью горячих клавиш и уведомлений
Недавно я натолкнулся на старый небольшой интересный скрипт, позволяющий переводить любой выделенный текст. Нужно всего лишь выделить текст, неважно, будь то в браузере, 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/
- Для использования скрипта необходимо, чтобы он выполнялся по какому-либо сочетанию клавиш. Необходимые для этого действия будут зависеть от того, какое окружение рабочего стола вы используете.
В 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