LINUX.ORG.RU

Консольная альтернатива Google Translate

 ,


2

2

Желательны два режима: словарь (разные варинты перевода) + перевод фразы.

Если кто-нибудь использует что-то такое – прошу поделиться.



Последнее исправление: ksevelyar (всего исправлений: 1)

1. Произношение. добавить в .bashrc:

say() { mplayer "http://translate.google.com/translate_tts?q=$1"; }

$say cat

2. Консольный переводчик - тьма их. у меня sdcv.

+ перевод фразы.

Реально фразы еще никто переводить не умеет. Но где-то был скрипт дергающий перевод с google translate

RCV ★★★★
()
[ megabaks@desktop ] ~ $ cat /usr/bin/gt
#!/bin/bash

curl -s -A "Mozilla/5.0" -d "ie=UTF8" -d "hl=en" -d "sl=$1" -d "tl=$2" -d "q=$3" http://translate.google.com | xmllint --html --format - 2>&- | grep result_box | elinks -dump | sed -e 's/^ *//'
[ megabaks@desktop ] ~ $ 

вариантов нет

перевод фразы присутствует - экранируй

megabaks ★★★★
()
import httplib, urllib, re, sys

def argparser():
    return sys.argv[1]

def retrieve(host, path):
    request = httplib.HTTPConnection(host)
    request.request("GET", path, "", {'User-Agent' : 'Mozilla/5.0'})
    response = request.getresponse()
    if response.status > 200:
        return '[["{}"],"ERROR"]'.format(response.reason)
    return response.read()

def parse_item(item, depth = 0):
    if typeimport httplib, urllib, re, sys

def argparser():
    return sys.argv[1]

def retrieve(host, path):
    request = httplib.HTTPConnection(host)
    request.request("GET", path, "", {'User-Agent' : 'Mozilla/5.0'})
    response = request.getresponse()
    if response.status > 200:
        return '[["{}"],"ERROR"]'.format(response.reason)
    return response.read()

def parse_item(item, depth = 0):
    if type(item) is str:
        if len(item) == 0:
            return ''
        return ("\t" * depth) + item + "\n"
    result = ''
    for sub_item in item:
        result += parse_item(sub_item, depth + 1)
    return result

phrase = argparser()
host = 'translate.google.com'
URL = 'translate_a/t?client=t&sl=auto&tl=ru&' + urllib.urlencode({'text' : phrase})

response = re.sub(',{2,}', ',', retrieve(host, "/" + URL))
try:
    translated = eval(response)
    result = ''
    for item in translated:
        if type(item) is str:
            result = "Translation: " + item + " > ru\n\n" + result
            break
        result += parse_item(item, -1)
    print result
except RuntimeError as ex:
    print "Something went wrong ({}): {}".format(response, ex)(item) is str:
        if len(item) == 0:
            return ''
        return ("\t" * depth) + item + "\n"
    result = ''
    for sub_item in item:
        result += parse_item(sub_item, depth + 1)
    return result

phrase = argparser()
host = 'import httplib, urllib, re, sys

def argparser():
    return sys.argv[1]

def retrieve(host, path):
    request = httplib.HTTPConnection(host)
    request.request("GET", path, "", {'User-Agent' : 'Mozilla/5.0'})
    response = request.getresponse()
    if response.status > 200:
        return '[["{}"],"ERROR"]'.format(response.reason)
    return response.read()

def parse_item(item, depth = 0):
    if type(item) is str:
        if len(item) == 0:
            return ''
        return ("\t" * depth) + item + "\n"
    result = ''
    for sub_item in item:
        result += parse_item(sub_item, depth + 1)
    return result

phrase = argparser()
host = 'translate.google.com'
URL = 'translate_a/t?client=t&sl=auto&tl=ru&' + urllib.urlencode({'text' : phrase})

response = re.sub(',{2,}', ',', retrieve(host, "/" + URL))
try:
    translated = eval(response)
    result = ''
    for item in translated:
        if type(item) is str:
            result = "Translation: " + item + " > ru\n\n" + result
            break
        result += parse_item(item, -1)
    print result
except RuntimeError as ex:
    print "Something went wrong ({}): {}".format(response, ex)translate.google.com'
URL = 'translate_a/t?client=t&sl=auto&tl=ru&' + urllib.urlencode({'text' : phrase})

response = re.sub(',{2,}', ',', retrieve(host, "/" + URL))
try:
    translated = eval(response)
    result = ''
    for item in translated:
        if type(item) is str:
            result = "Translation: " + item + " > ru\n\n" + result
            break
        result += parse_item(item, -1)
    print result
except RuntimeError as ex:
    print "Something went wrong ({}): {}".format(response, ex)

Вывод:

$ python2 ~/bin/translate.py "Hello"
Translation: en > ru

        привет
        Hello
        privet
        interjection
                привет
                здравствуйте
                алло
                        привет
                                hello
                                hi
                                hail
                                howdy
                                bye
                                hullo
                        здравствуйте
                                hello
                                good afternoon
                                how do you do
                                how are you
                                how d'ye do
                                good man
                        алло
                                hello
                                hullo
                                hallo
                Алло
                Здравствуйте.
                        Алло
                        Здравствуйте.
        verb
                здороваться
                звать
                окликать
                        здороваться
                                greet
                                hello
                                salute
                                hullo
                                hallo
                                halloa
                        звать
                                call
                                invite
                                shout
                                hail
                                hallo
                                hello
                        окликать
                                call
                                holler
                                hail
                                speak
                                challenge
                                hello
        noun
                приветствие
                приветственный возглас
                возглас удивления
                        приветствие
                                greeting
                                welcome
                                salutation
                                salute
                                hello
                                compliment
                        приветственный возглас
                                halloa
                                hallo
                                viva
                                hello
                        возглас удивления
                                hallo
                                halloa
                                hello

$ python2 ~/bin/translate.py "Hello world"                                                                                           
Translation: en > ru

        привет мир
        Hello world
        privet mir

Использую в основном вызывая по хоткею этот скрипт:

#!/bin/bash
# Обвязка для translate.py
notify-send "$(xsel -o)" "$(python2 ~/bin/translate.py "$(xsel -o | sed "s/[\"'<>]//g")" | head -n 35)"

Deleted
()

Спасибо за ответы.

ksevelyar
() автор топика

смотря какие языки, в случае перевода фразы apertium радует; dictd для словарей удобен

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

translated = eval(response)

Там json-dict приходит? (все-таки мне кажется лучше json импортировать). А промежуточное представление в виде девара есть? просто пока не разглядел.

notify-send «$(xsel -o)» ..

Раз питон, то можно прямо там хsel ловить, запустив демоном. Иногда как в goldendict (по выделению +опционаольно при нажатом модификаторе) удобнее.

anonymous
()

если бы не фразы - то например socrat

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