Перевод текста в программах, браузерах, документах и т.д. [Инструкция].

Автор CoolAller, 19 июня 2015, 03:57:09

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

CoolAller

Всем привет!

Решил поделиться небольшим лайфхаком, а именно способом перевода текста, использующего сервис Google Translate. Способы описаные на хабре и т.д. уже не работают или имеют недочеты. От прочих переводчиков и плагинов для браузера он отличается тем, что может переводить на русский язык (и не только) слова или даже текст целиком практически откуда угодно, в т.ч. из текстовых документов, диалоговых окон программ, терминала и т.д. используя для этого назначенные вами горячие клавиши и выводя на экран перевод во всплывающем окне уведомлений. Естественно этот лайвхак будет работать до тех пор пока в очередной раз кто-нибудь что-нибудь не сломает поменяет.
И так приступим, нам понадобится пакет translate-shell, сразу говорю, что тот, что в репах не работает, поэтому скачаем его со страницы автора на GitHub. Так же нам понадобятся пакеты gawk и libnotify-bin, их можно взять из реп, там они пока еще рабочие  :D  Поэтому либо качаем целиком translate-shell со страницы на GitHub и устанавливаем (читаем readme), либо просто берем скрипт исполняемого файла и помещаем его в /usr/local/bin/.

Все то, что описано ниже можно сделать выполнив одну команду в терминале от суперпользователя, а затем назначить клавишу для перевода как описано в пункте 4:

apt-get install libnotify-bin gawk xsel && wget -N -P /usr/local/bin/ git.io/trans && chmod +x /usr/local/bin/trans && echo -e '#!/bin/sh \nnotify-send -u critical "$(xsel -o | trans -b :ru -no-ansi -b -l)" -i accessories-dictionary' > /usr/local/bin/translate && chmod +x /usr/local/bin/translate


Пошаговая установка:
1. Если не установлены пакеты libnotify-bin и gawk, то устанавливаем их командой:
sudo apt-get install libnotify-bin gawk
2. Скачиваем файл translate-shell командой:
wget git.io/trans
Перемещаем его в /usr/local/bin/ командой:
sudo mv trans /usr/local/bin/
Делаем файл исполняемым:
sudo chmod +x /usr/local/bin/trans

3. Если мы хотим чтобы перевод помимо того, что он будет выводится во всплывающем окне уведомлений еще и сразу помещался в буфер обмена, то тогда нужно установить пакет xclip:
sudo apt-get install xclip
Теперь нужно создать в /usr/local/bin/ файл с любым именем в который мы поместим скрипт, например, в том же терминале введя:
sudo nano /usr/local/bin/translate
В данном случае скрипт будет выглядеть следующим образом, копируем его в терминал и сохраняем нажав ctrl+x:
#!/bin/sh
a=`xclip -o | trans -b :ru -no-ansi -b -l | sed 's/\[\[\[\"//' | cut -d \" -f 1`
notify-send -u critical "$a" -i accessories-dictionary
echo $a | xclip -selection clipboard

Затем делаем файл исполняемым:
sudo chmod +x /usr/local/bin/translate
Если же мы хотим, чтобы перевод не помещался в буфер обмена, а просто выводился на экран во всплывающем окне уведомлений, то вместо xclip устанавливаем xsel:
sudo apt-get install xsel
В этом случае скрипт будет иметь такой вид:
#!/bin/sh
notify-send -u critical "$(xsel -o | trans -b :ru -no-ansi -b -l)" -i accessories-dictionary

Сохраняем и не забываем сделать файл исполняемым, как описано выше.

ВНИМАНИЕ!
При частых запросах google и yandex ввел блокировку, поэтому вместо перевода получается пустой вывод и libnotify просто ничего не выводит.
Для того чтобы изменить сервис перевода нужно добавить после trans аргумент -e (-engine ENGINE Specify the translation engine to use), а после написать, например: bing
Чтобы вывести весь список доступных сервисов перевода в терминале нужно ввести команду:
trans -S

4. Теперь нам нужно добавить хот-кей на команду перевода, можно воспользоваться xbindkeys (установив ее) или использовать стандартную тулзу входящую в ваш дистрибутив или DE.
В DE Mate это Keyboard Shortcuts (mate-keybinding-properties), в DE Cinnamon (cinnamon-settings keyboard). В ней пишем название для команды, естественно совпадающей с названием скрипта в /usr/local/bin, в нашем случае: translate и задаем нужное нам сочетание клавиш, я выбрал свободное Alt+F3, можно любое другое. Теперь нам достаточно просто выделить нужный нам текст и нажать назначенные клавиши.

PS. Скорость появления перевода будет зависеть от скорости интернет-соединения и количества переводимого текста. Если вам нужен перевод на язык отличный от русского, то нужно просто поменять в скриптах trans :ru на нужный вам язык, например, :fr (французский). Чтобы не делать большой таймаут показа всплывающих сообщений для чтения больших кусков текста, можно просто зажимать лкм на всплывающем собщении и оно не пропадет до тех пор пока вы не отпустите лкм (левая кнопка мыши).

Автор скрипта старается поддерживать его в работоспособном состоянии, поэтому скрипт время от времени обновляется и если Вы не хотите возиться с исправлением скрипта вручную, если он перестанет работать, то просто время от времени заменяйте весь скрипт на новый, который можно скачать с Gitub одной командой из терминала: wget git.io/trans

yoric

А зачем лезть в /usr/bin, когда для таких дел есть /usr/local/bin?

yoric

Если потом, дай (или не дай) бог, дойдёт дело до установки пакета с таким же файлом, его втихую (или с руганью) затрёт. А в /usr/local останется как ни в чём ни бывало. Конфликта не будет.

CoolAller

yoric, в принципе согласен, можно поместить в /usr/local/bin.