ubuntuusers.de

Translation Helper

Autor:
burli
Datum:
12. Februar 2011 15:38
Code:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import sys
import urllib
import simplejson
from subprocess import call

baseUrl = "http://ajax.googleapis.com/ajax/services/language/translate"

def getSplits(text,splitLength=4500):
    ''' Translate Api has a limit on length of text(4500 characters)
    that can be translated at once, '''
    return (text[index:index+splitLength] for index in xrange(0,len(text),splitLength))

def translate(text,src='', to='en'):
    ''' A Python Wrapper for Google AJAX Language API:
    * Uses Google Language Detection, in cases source language is not provided with the source text
    * Splits up text if it's longer then 4500 characters, as a limit put up by the API '''
    params = ({'langpair': '%s|%s' % (src, to), 'v': '1.0' })
    retText=''
    for text in getSplits(text):
        params['q'] = text
        resp = simplejson.load(urllib.urlopen('%s' % (baseUrl), data = urllib.urlencode(params)))
        try:
            retText += resp['responseData']['translatedText']
        except:
            raise
    return retText

def test():
    infile = open(sys.argv[1], "r")
    outfile = open(sys.argv[2], "w")
    for absatz in infile:
        for satz in absatz.split(". "):
            call("clear")
            print "*" * 40
            print absatz
            print "*" * 40
            if satz == "":
                continue
            print satz.strip()
            retText = translate(satz, src="en", to="de")
            print retText
            print "*" * 20
            text = raw_input('Übersetzung #> ')
            outfile.write(text + " ")
        outfile.write("\n")
    infile.close()
    outfile.close()


if __name__=='__main__':

    try:
        test()
    except KeyboardInterrupt:
        print "\n"
        sys.exit(0)