Переведи меня нежно

Спасибо за скрипт, все отлично, ждем нововведений :)
обновление
+ добавлен графический интерфейс yad
+ реализована работа через конвейер
$ echo "hello" | ./langmi
$ echo "hello" | ./langmi --ui cli
$ ./langmi -h | ./langmi --ui cli --lang-in ru --lang-out en
+ добавлены ключи и их реализация
-b, --buffer-out помещать перевод В буфер
-e, --closing-time секунд до закрытия окна с переводом
-k, --get-keys показать список ключей и их значения
--config использовать указанный конфиг-файл
Немного некорректно переводит выделенный текст man-страниц и еще более криво - текст хелпов из конфигуратора ядра make menuconfig. Google почему-то воспринимает перевод строки, как конец фразы. Ну и лишние символы вроде пробелов, табуляций и всякой псевдографики ни к чему.

Добавил небольшой фильтр (исправлено):
TextIn="$(xsel -o | sed -r -e 's/│//g;s/^[ \t]+//;s/[ \t]+$//' | tr '\n', ' ')"
Перевод стал красивым. Вертикальную палочку в первой замене скопипастил прямо из menuconfig, лень смотреть код символа, так что это символ псевдографики, а не оператор регулярки.
heider
Google почему-то воспринимает перевод строки, как конец фразы.
И это действительно заколебало при переводе man и некоторых других ...
Спасибо за фильтр, сейчас смотрится красиво ... конечно, большое спасибо и red за данный продукт ...
Ошибки не исчезают с опытом - они просто умнеют
heider, Ваше регулярное выражение( выделено курсивом) s/^[ \t]*//; ошибочно в принципе, хотя в данном случае и работает :) Если бы вы делали замену, то были бы немного удивлены. Например:
[anode@TM-8481 ~]$ echo 'abc' | sed -r -e 's/^[ \t]*/Z/'
Zabc
Обана! Пробела перед а нет и табуляции нет, а Z вставлена? То же происходит и у вас, просто при удалении этого не видно :)
Вы ведь хотели удалить все пробелы и табы в начале строки, для этого есть +( один и более раз). * - это ноль и более, т.е. любое, следовательно, когда в начале строки нет ни пробелов, ни табов - условие выполняется, вот откуда берется Z.
[anode@TM-8481 ~]$ echo '_* не работает' | sed -e 's/^[ \t]*/ZZZ/'
ZZZ_* не работает
[anode@TM-8481 ~]$ echo '_и в ERE' | sed -re 's/^[ \t]*/ZZZ/'
ZZZ_и в ERE
[anode@TM-8481 ~]$ echo '_а + работает' | sed -re 's/^[ \t]+/ZZZ/'
_а + работает
[anode@TM-8481 ~]$ echo '           _а + работает' | sed -re 's/^[ \t]+/ZZZ/'
ZZZ_а + работает
[anode@TM-8481 ~]$ echo '           _только в ERE' | sed -e 's/^[ \t]+/ZZZ/'
           _только в ERE
[anode@TM-8481 ~]$ echo ' _в BRE как-то так' | sed -e 's/^[ \t][ \t]*/ZZZ/'
ZZZ_в BRE как-то так
[anode@TM-8481 ~]$ echo '             _в BRE как-то так' | sed -e 's/^[ \t][ \t]*/ZZZ/'
ZZZ_в BRE как-то так
[anode@TM-8481 ~]$ echo '_в BRE как-то так' | sed -e 's/^[ \t][ \t]*/ZZZ/'
_в BRE как-то так
anode, зоркий сокол ... а я даже и не стал смотреть - работает и работает, оставил все как есть ... особенно доставало при переводе спецификаций pdf, а с этим благодать
Ошибки не исчезают с опытом - они просто умнеют
anode
heider, Ваше регулярное выражение( выделено курсивом) s/^[ \t]*//; ошибочно в принципе
Да, Вы правы. Там плюс должен быть. Исправил.
heider, не бери в голову, молодец, полезное дело сделал ...
Ошибки не исчезают с опытом - они просто умнеют
vasek
зоркий сокол
та все ласты в дырках от граблей
Полезное дело кто спорит.

heider, так как было - неправильно, но лучше, чем сейчас ) Cейчас не работает! Ключ -r ! + - это из ERE поэтому sed надо запускать с ключем -r или -E , без включения ERE плюс - єто плюс, т.е. не метасимвол. См. примеры
TextIn="$(xsel -o | sed -r -e 's/│//g; s/^[ \t]+//;s/[ \t]+$//' | tr '\n', ' ')"
$ echo '           _+ работает только в ERE' | sed -e 's/^[ \t]+/ZZZ/'
           _только в ERE
Пробелы остались на месте. sed -r …..
anode
sed надо запускать с ключем -r
Честно говоря, проверял только русский текст на выходе, английский текст после sed-а не проверял. Спасибо за замечание. :) Поправил и в своем комментарии тоже, вдруг кто-то оттуда будет копировать.
 
Зарегистрироваться или войдите чтобы оставить сообщение.