Идея и реализация НЕ моя, это урезанная версия поста с хабра.
Шаг 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)
Бегло прочитал, сам не проверял, но плюс поставил. Может быть полезно, для молодёжи.
А как (через блокнот ли?) создавать этот файл (seltr) и почему не сразу в нужной папке?
Если даже не знаешь чем создать файл, то лучше не суйся в эту тему.
Я бы вам посоветовал виджет Translatoid. Есть в хранилищах. Делает тоже самое. Можно назначить горячие клавиши или вынести куда надо. А ещё есть расширение для лисы imTranslator
Да, через редактор. В указанной директории может создавать и перемещать в неё только администратор (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 и аналогичными, чтобы нахвататься поверхностных или нет знаний.
Как сделать так, чтобы чтобы в оповещении появлялась полная информация - слово "luck" скрипт переводит "удачи", а нужно чтобы как-то так
Очень хорошая штука, сам пользовался. Но сейчас в очередной раз сделал этот скрипт и он не переводит. Просто уведомлением выводит выделенную фразу. Мне интересно: только у меня так?
Гугл со многих ИП адресов закрыл возможность в автомате переводить. Пишут "Мы зарегистрировали подозрительный трафик, исходящий из вашей сети. С помощью этой страницы мы сможем определить, что запросы отправляете именно вы, а не робот" Проверить конкретный ИП можно из браузера вот таким запросом (часть скрипта)
http://translate.google.com/translate_a/t?client=t&text=$(xsel -o | sed
Если видите капчу и текст что выше - облом с переводом с данного адреса.
Обойти это наврядли можно из скрипта :(
ЗЫ Действительно было очень удобно. Если кто знает способ обхода - отпишитесь.
Да, так и есть. Спасибо.
В прочем, я так и подозревал. Под Windows пользуюсь для этих целей программкой QTranslate, так она тоже гуглом некоторое время не переводила пока не пофиксили. Гугл ведь свой клиент пихает и совсем не бесплатно.
Нашел на том же Хабре в последних комментариях к вышеуказанной статье, что просто изменился 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)"
Проверил, работает.
Огромное спасибо. Думал что утеряно безвозвратно.
Опять сдох мой любимый переводчик :(
Запрос к гуглу возвращает
Your client does not have permission to get URL
Может кто победил?
Хм... Интересно. У меня сразу открывается браузер и показывается Ссылка
У меня всплывает текст, который хочу перевести без перевода.
А из командной строки, если сделать с отладочной информацией - то получаю сообщение что выше написал. Притом пробовал играться с агентами - безрезультатно.
Не смотрел, но, скорее всего, стандартный метод защиты - передача cookie (вначале нужно получить и делать запрос уже с ним).
Отправить комментарий