LINUX.ORG.RU

Доработка скрипта bash

 ,


0

2

Нашел на форумах скрипт для использования Google Translator без необходимости открывать браузер. Вроде работает нормально, однако из выделенного фрагмента на несколько предложений переводит только первые два.

Код:

#!/usr/bin/env bash
text="$(xsel -o)"
translate="$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=ru&dt=t&q=$(echo $text | sed "s/[\"'<>]//g")" | sed "s/,,,0]],,.*//g" | awk -F'"' '{print $2, $6}')"

echo "$translate" >> /tmp/notitrans
echo "$translate" | xclip -selection clipboard



Как сделать, чтобы выделенный фрагмент текста переводился полностью?

Ответ на: комментарий от amd_amd

ага там даже в примерах есть

 awk ' {print $0} ' 
обозначает вывод всех столбцов

bagdanchik ()
Ответ на: комментарий от amd_amd

#!/usr/bin/env bash

Всё правильно. bash в разных системах может быть в разных местах. Во freebsd он в /usr/local/bin, например. А env всегда в одном месте.

pawnhearts ★★★★★ ()

Вы учитесь писать программки? Вы выбрали омерзительный пример для изучения или тем паче подражания.

Или вам просто нужна клиент для общения с Гуглопереводчиком, без необходимости запускать в браузере ихние несвободные программы? Так возьмите что-нибудь доделанное! trans(1) из пакета translate-shell (так в Дебиане), например.

Zmicier ★★★★★ ()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

в том-то и дело, что нужен клиент для гугла. Но доделанного что-то не могу найти для убунты. этот пример нашел, подумал — там всего несколько строк, можно ведь изменить его под свои требования.

bagdanchik ()
Ответ на: комментарий от bagdanchik

Программы обычно не пишут «для Убунты» или для «для Федоры». Даже «для ГНУ» довольно редко.

Если же вы не можете найти того, что я вам посоветовал *в* вашей Убунте, так это она у вас, наверное, просто старовата. Поставьте иначе, чем оттуда. Способы напомнить?

Zmicier ★★★★★ ()
Ответ на: комментарий от Zmicier

попробовал translate-shell, понравилось. Но задача другая немного: 1 выделяю в gedit текст 2 нажимаю хоткей 3 выполняется перевод и копируется в буфер обмена

bagdanchik ()
Ответ на: комментарий от bagdanchik

Я не уловил, что в вашей задаче «другого».

Вы хотите услышать совета, как все это повесить на клавишу в Гедите? Я им не пользуюсь. Если не можете найти сами, спросите на форуме.

Zmicier ★★★★★ ()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Спасибо, но только что сам разобрался! мне нужно было сделать скрипт, который без запуска терминала, браузера и другого ПО позволил бы делать гуглоперевод в Гедит или другом редакторе нажатием двух кнопок.

Удалось его сделать с помощью примеров в сети и предложенной translate-shel. Тему можно закрывать.

bagdanchik ()
Ответ на: комментарий от Zmicier

И да — предложенный в теме пример, действительно отвратительным оказался.

bagdanchik ()
Ответ на: комментарий от bagdanchik

Удалось его сделать...

Прелестно. А тому, кому это понадобиться кроме вас, вы предлагаете пройти тот же путь самостоятельно?

Тему можно закрывать.

Ну так не ждите — закрывайте. :-)

Zmicier ★★★★★ ()
Ответ на: комментарий от Zmicier

Сомневаюсь, что это кому-то понадобится, кроме меня. А оказалось все просто:
1. установил пакет xclip.
2. скачал скрипт translate-shell.
3. в отдельном файле слепил такой код:

#!/usr/bin/env bash
SEL="$(xsel -o)"
translate="$(./trans :ru -b "$SEL")"
echo "$translate" | xclip -selection clipboard

4. назначил хоткей.

bagdanchik ()
Ответ на: комментарий от bagdanchik

Сомневаюсь, что это понадобится кому-то, кроме меня?

Полагаете, что вы уникальны? :-)

все просто

Да даже еще проще. Зачем тут эти переменные? И зачем две разные программы для общения с буфером обмена?

xsel -o | trans :ru -b | xsel -ib
Zmicier ★★★★★ ()
Ответ на: комментарий от Zmicier

Полагаете, что вы уникальны? :-)

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

А другие просто в состоянии сделать такое самое без форумов, как я.

Да даже еще проще. Зачем тут эти переменные? И зачем две разные программы для общения с буфером обмена?

О, так еще лучше. Благодарю.

bagdanchik ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.