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