Welcome, guest | Sign In | My Account | Store | Cart

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. Working fine for me, please let me know if i missed something.

Python, 53 lines
 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
# -*- coding: utf-8 -*-

import re
import sys
import urllib
import simplejson

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():
    msg = "      Write something You want to be translated to English,\n"\
        "      Enter ctrl+c to exit"
    print msg
    while True:
        text = raw_input('#>  ')
        retText = translate(text)
        print retText
        

if __name__=='__main__':
    try:
        test()
    except KeyboardInterrupt:
        print "\n"
        sys.exit(0)

2 comments

raisa slepoy 12 years, 12 months ago  # | flag

I'm just learning.

How do you run this code? I would like to see the output.

Ashish Yadav (author) 12 years, 12 months ago  # | flag

Quick Test run/

$~/Desktop$ python recipe-576890-1.py

Write something You want to be translated to English,
Enter ctrl+c to exit

>  mucho gracias amigo
Thank you friend
> ...

So as you can see, given the original spanish text(mucho gracias amigo), it uses google language translation API to get the corresponding english translated text. if you are familiar with python, you can also download and import this recipe and can call the translate function to do the language translation yourself. See how test(...) functions uses translate(...) to translate user's input.

>>> import recipe
>>> recipe.translate(non_english_text) #Prints English transation of the param text.