TranslateIt/ru

Работоспособность скрипта проверена на Awesome 3.4 и 3.5.5

Awesome 3.5 В связи с тем, что в Lua 5.2 введено явное объявление библиотек как локальных переменных, нужно удалить local, т.е. сделать вызов naughtly следующим образом: naughty = require("naughty")

Периодически читая man, или знакомясь с очередной статьей в Интернете на английском, порой возникают сложности в понимании некоторых слов. Приходилось запускать какой-либо из переводчиков, копировать текст в буфер, переключаться на него, вставлять, и нажимать кнопку перевести. Слишком много действий, да и времени тоже.

И вот буквально на днях пользователь SLEDopit на сайте UnixForum привел скрипт работающий с Google.Translate. А у меня как раз созрело решение, как объединить этот скрипт и Awesome.

Итак, теперь я просто выделяю текст, в браузере или консоли, или даже в Pidgin(не копирую, а просто выделяю - на самом деле так работает X буфер), нажимаю Mod4+Control+t и получаю уведомление с переведенным текстом. А также переведенный текст будет скопирован в буфер. Вот так это работает. Примечание: Скрипт реализован таким образом, что даже при отсутствии интернета Awesome висеть не будет.

Для работы скрипта требуются установленный curl, html2text, iconv, awk, sed, xclip Для начала создадим скрипт gtranslate и поместим его в папку со своими скриптами: if [ -z "$1" ] then echo "Exiting" fi text="$1" l_source="auto"
 * 1) !/bin/bash

if "$text" =~ ^[а-яА-ЯёЁ].* then l_target="en" else l_target="ru" fi result=$(curl --connect-timeout 1 -s -i --user-agent "" -d "sl=$l_source" -d "tl=$l_target" --data-urlencode "text=$text" https://translate.google.ru) encoding=$(awk '/Content-Type: .* charset=/ {sub(/^.*charset=["'\]?/,""); sub(/[ "'\].*$/,""); print}' <<<"$result") result=$(iconv -f $encoding <<<"$result" | awk 'BEGIN {RS=" "};/]* id=["'\]?result_box["'\]?/' | html2text -utf8 | sed 's/<[^>]*>//g') echo $result | xclip -in -sel clip    #копируем перевод в буфер result=`echo "naughty.notify({title=\"Перевод: \", text=\" $result\", timeout = 20})"` echo $result | awesome-client - exit

Даем файлу права на выполнение: chmod +x gtranslate

Теперь добавьте в ваш rc.lua функцию clip_translate: function clip_translate local clip = nil clip = awful.util.pread("xclip -o") if clip then awful.util.spawn("/home/user/script/gtranslate \"" .. clip .."\"",false) end end

Ну и напоследок, добавляем в секцию Standart program клавиши для вызова нашей функции: awful.key ({modkey, "Control" }, "t", function clip_translate end),

Перезапускаем Awesome, выделяем текст нажимаем Mod4+Ctrl+t и наслаждаемся переводом!

За помощь в отладке и модификации скрипта, моя благодарность masterslave89