Перевод выделенного текста с любого языка на русский

Изображение пользователя skyline.

Идея и реализация НЕ моя, это урезанная версия поста с хабра.

Шаг 1
Устанавливаем необходимые пакеты:
sudo apt-get install libnotify-bin xsel

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

#!/usr/bin/env bash
notify-send -u critical "$(xsel -o)" "$(wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$(xsel -o | sed "s/[\"'<>]//g")&sl=auto&tl=ru" | sed 's/\[\[\[\"//' | cut -d \" -f 1)"

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

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

Шаг 3
Делаем этот файл исполняемым и перемещаем его в /usr/bin/:
sudo chmod 777 ./seltr && sudo mv ./seltr /usr/bin/

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

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

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

Комментарии (15)

+1
AlexBKost - 20 Январь, 2014 - 01:36

Бегло прочитал, сам не проверял, но плюс поставил. Может быть полезно, для молодёжи.

0
RexSep - 29 Май, 2014 - 04:42

А как (через блокнот ли?) создавать этот файл (seltr) и почему не сразу в нужной папке?

+1
Гость - 2 Июнь, 2014 - 03:00

Если даже не знаешь чем создать файл, то лучше не суйся в эту тему.

0
kot040188 - 2 Июнь, 2014 - 18:50
Изображение пользователя kot040188.

Я бы вам посоветовал виджет Translatoid. Есть в хранилищах. Делает тоже самое. Можно назначить горячие клавиши или вынести куда надо. А ещё есть расширение для лисы imTranslator

0
Гость - 20 Декабрь, 2015 - 20:10

Да, через редактор. В указанной директории может создавать и перемещать в неё только администратор (root). Мной используется QStardict, его можно использовать в отрыве от сети, но необходимо скачать словарь, например, http://prdownloads.sourceforge.net/xdxf/stardict-comn_sdict02_eng_rus_full-2.4.2.tar.bz2, распаковать и поместить файлы в /usr/share/stardict/dic/ (тоже нужен root).
Чтобы пореже натыкаться на злобствующих дяденек и тётенек, можно ознакомиться с сайтами http://forum.ubuntu.ru, http://ubuntovod.ru и аналогичными, чтобы нахвататься поверхностных или нет знаний.

0
human - 9 Август, 2014 - 13:40

Как сделать так, чтобы чтобы в оповещении появлялась полная информация - слово "luck" скрипт переводит "удачи", а нужно чтобы как-то так

0
akal - 8 Май, 2015 - 17:16
Изображение пользователя akal.

Очень хорошая штука, сам пользовался. Но сейчас в очередной раз сделал этот скрипт и он не переводит. Просто уведомлением выводит выделенную фразу. Мне интересно: только у меня так?

+2
lord_i - 8 Май, 2015 - 18:11
Изображение пользователя lord_i.

Гугл со многих ИП адресов закрыл возможность в автомате переводить. Пишут "Мы зарегистрировали подозрительный трафик, исходящий из вашей сети. С помощью этой страницы мы сможем определить, что запросы отправляете именно вы, а не робот" Проверить конкретный ИП можно из браузера вот таким запросом (часть скрипта)
http://translate.google.com/translate_a/t?client=t&text=$(xsel -o | sed
Если видите капчу и текст что выше - облом с переводом с данного адреса.
Обойти это наврядли можно из скрипта :(

ЗЫ Действительно было очень удобно. Если кто знает способ обхода - отпишитесь.

0
akal - 8 Май, 2015 - 18:12
Изображение пользователя akal.

Да, так и есть. Спасибо.
В прочем, я так и подозревал. Под Windows пользуюсь для этих целей программкой QTranslate, так она тоже гуглом некоторое время не переводила пока не пофиксили. Гугл ведь свой клиент пихает и совсем не бесплатно.

+3
akal - 8 Май, 2015 - 21:57
Изображение пользователя akal.

Нашел на том же Хабре в последних комментариях к вышеуказанной статье, что просто изменился URL. Скрипт теперь выглядит так:
#!/usr/bin/env bash
notify-send -u critical "$(xsel -o)" "$(wget -U "Mozilla/5.0" -qO - "https://translate.google.com/translate_a/single?client=t&sl=auto&tl=ru&hl=ru&dt=bd&dt=ex&dt=ld&dt=md&dt=qc&dt=rw&dt=rm&dt=ss&dt=t&dt=at&ie=UTF-8&oe=UTF-8&otf=2&srcrom=1&ssel=0&tsel=0&kc=3&tk=519592|450115&q=$(xsel -o | sed "s/[\"'<>]//g")&sl=auto&tl=ru" | sed 's/\[\[\[\"//' | cut -d \" -f 1)"

Проверил, работает.

0
lord_i - 9 Май, 2015 - 12:38
Изображение пользователя lord_i.

Огромное спасибо. Думал что утеряно безвозвратно.

0
lord_i - 20 Декабрь, 2015 - 14:29
Изображение пользователя lord_i.

Опять сдох мой любимый переводчик :(
Запрос к гуглу возвращает
Your client does not have permission to get URL

Может кто победил?

0
akal - 20 Декабрь, 2015 - 19:22
Изображение пользователя akal.

Хм... Интересно. У меня сразу открывается браузер и показывается Ссылка

0
lord_i - 20 Декабрь, 2015 - 20:15
Изображение пользователя lord_i.

У меня всплывает текст, который хочу перевести без перевода.
А из командной строки, если сделать с отладочной информацией - то получаю сообщение что выше написал. Притом пробовал играться с агентами - безрезультатно.

0
MacLeod - 20 Декабрь, 2015 - 21:01
Изображение пользователя MacLeod.

Не смотрел, но, скорее всего, стандартный метод защиты - передача cookie (вначале нужно получить и делать запрос уже с ним).

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры