#!/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)