Powered by Blogger.

Translator on Shell, with Python Code

Saya cuma membayangkan bagaimana apabila ada aplikasi yang bekerja secara simple dan mudah untuk digunakan apabila kita browsing dan menemukan kata-kata yang tidak dimengerti, copy paste dan membuka url google.translate.com tentu saja tidak menyenangkan dan "kelamaan".

akhirnya tercetus ide untuk membuat (lebih tepatnya mencari) code yang bisa dieksekusi di python. Tentu saja banyak aplikasi yang berjalan dengan modus GUI yang berjalan di platform OS-WINDOWS atau (sedikit) LINUX, beberapa mungkin bebayar alias tidak gratis.

setelah mencoba dan terus mencoba, akhirnya henkhei mencoba untuk sharing kode yang mudah sekali di implementasikan, kebetulan saya menggunakan LINUX, dan mungkin sedikit penyesuaian untuk instalasi di WINDOWS :

Depedensi dari kode ini SIMPLE-JSON pada PYTHON, untuk itu pertama-tama instalasikan module atau library python dengan :

# sudo apt-get install python-simplejson

atau dengan men-download sourcecodenya

# wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.0.4.tar.gz#md5=9a888ea017ef2fcd42a2823454950b16
# tar zxf simple-2.0.4.tar.gz
# cd simple-2.0.4
# sudo python setup.py install

ket:saat instalasi paket pypi python harus konek internet

Selanjutnya lakukan perintah dibawah ini

# cd python-googlelanguage-read-only
# sudo python setup.py install

setelah selesai melakukan instalasi di atas buat kode python di bawah ini (modifikasikan dengan bebas, dan suka-suka yang penting program berjalan he..he..he..) :

# -*- 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)

Bannerad

Artikel Terpopuler

Tags

Blogumulus by Roy Tanck and Amanda Fazani