Перевод с помощью translate.google.ru и notify-osd

Хочу поделиться с вами своим лайфхаком. В первую очередь он предназначен для людей, которым лень лезть в словарь всякий раз, когда они встречают незнакомое иностранное слово в тексте.

Я хочу рассказать, как получить перевод выделенного текста в виде оповещения рабочего стола. 

У многих десктопных "словарей" есть функция для перевода выделения, которая как раз и предназначена для того, чтобы «не лазить в словарь», но почему-то у меня всегда были с ней проблемы: не переводит, когда нужно; переводит, когда не нужно и так далее.

Наверняка, многие из вас видели различные скрипты для использования google translate из консоли, но я считаю этот способ неудобным в большинстве случаев, не смотря на то, что предпочитаю CLI.

Я подумал, что неплохо было бы иметь возможность быстро переводить выделенный текст или слово и видеть результат, в виде оповещения рабочего стола. Остаётся только совместить google translate cli + selections + notifications.

Решение

Очень простой интерфейс для отправки уведомлений из консоли предоставляет утилита notify-send, которую можно найти в пакете libnotify-bin. Пример:

Даст следующий результат:

Для получения текущего выделения в X Window System используется утилита xsel.

Выведет текущий selection в стандартный поток вывода.

Шаг 1

Устанавливаем необходимые пакеты:

Я уверен, что каждый знает, как устанавливать пакеты в своей системе, поэтому не привожу примеры.

Шаг 2

Создаём файл с именем seltr и копируем в него следующие 2 строки:

Параметр -u critical нужен для того, чтобы оповещение могло перекрывать любые окна.

Параметры запроса google translate:

  • text=$(xsel -o | sed "s/["]//g") - исходный текст - текущий selection с вырезанными и "
  • sl=auto - автоопределение исходного языка
  • tl=ru - язык результата - русский

Шаг 3

Делаем этот файл исполняемым и перемещаем его в /usr/bin/:

Шаг 4

Теперь остаётся назначить комбинацию клавиш на команду seltr (мой выбор - alt+5). Для этого можно воспользоваться стандартными сердствами, которые предоставляет ваша рабочая среда, либо использовать xbindkeys.

Как это работает:

  • Выделяем какой-нибудь иностранный текст(на любом языке), в любом окне
  • Нажимаем alt+5
  • Получаем перевод

Немного скриншотов

Английский

Немецкий

Французский

Украинский

Китайский

Плюсы такого метода:

  • Возможность переводить фрагменты текста
  • Требуется минимальное количество действий для получения перевода
  • Поддержка практически всех языков
  • Отсутствие необходимости в установке отдельных словарей

Минусы:

  • Не работает без подключения к интернету
  • Нет возможности выделить текст перевода

Проверенно в Unity, GNOME2, Xfce4 и KDE4.

Источник: habrahabr.ru.

Так же приведу другой вариант скрипта, который делает всё то же самое, но плюс ещё копирует перевод в буфер обмена.

Приятного пользования.

Любите кофе? Приобретите себе Кофейные автоматы и наслаждайтесь данным напитком каждый день.