воскресенье, 16 мая 2010 г.

Python client for GoogleTranslate

Есть две хороших и удобных штуки: сервис GoogleTranslate и *nix сonsole. И я решил подружить их =). Вообщем решил написать консольный клиент для GoogleTranslate.

В качестве языка выбрал python. Побродив по просторам всемирной паутины, готовой имплиментации python API для GoogleTranslate не обнаружил. Пришлось разбиратся самому. Вообщем-то ничего сложного:

Обращаемся по URL(пример которого приведен ниже) в ответ получам JSON со статусом ответа, и если все хорошо то там же найдем и перевод:

URL:

http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=[FROM]%7C[TO]&q=[TEXT]

FROM - из какого языка переводить
%7С - разделитель в виде вертикальной черты(|)
TO - в какой язык переводить
TEXT - текст который нужно перевести


Ответный JSON:

{responseData: {translatedText: [TEXT]}, responseDetails: None, responseStatus: [STATUS]}

translatedText - переведенный текст
responseStatus - статус сообщения

Так как я использую python 2.5, для работы с JSON легким движением руки установил simplejson

  1. sudo apt-get install python-simplejson



После этого написал модуль для работы с GoogleTranslate API:


  1. #!/usr/bin/env python

  2.  

  3. import simplejson

  4. import urllib

  5. import sys

  6.  

  7. GOOGLE_TRANSLATE_AJAX_URL = "http://ajax.googleapis.com/ajax/services/language/translate?"

  8. LANGUAGE_SEPARATOR = "|"

  9. RESPONSE_STATUS = "responseStatus"

  10. RESPONSE_DATA = "responseData"

  11. TRANSLATED_TEXT = "translatedText"

  12.  

  13. def translate(fromLanguage, toLanguage, text):

  14.         """ Translate text using google translate service"""

  15.         # Generate url

  16.         url = GOOGLE_TRANSLATE_AJAX_URL + urllib.urlencode({"v" : "1.0", \

  17.                         "langpair" : fromLanguage + LANGUAGE_SEPARATOR + toLanguage, \

  18.                         "q" : text})

  19.  

  20.         result = simplejson.load(urllib.urlopen(url))

  21.        

  22.         if (result[RESPONSE_STATUS]== 200):

  23.                 return result[RESPONSE_DATA][TRANSLATED_TEXT]



Вот такой простенький модуль получился =).

Ну а теперь код основного скрипта:

  1. #!/usr/bin/env python

  2.  

  3. from googledict import translate

  4. import sys

  5.  

  6. def main(args):

  7.        

  8.         fromLanguage = args[0][:2]

  9.         toLanguage = args[0][2:]

  10.         text = args[1]

  11.  

  12.         print translate(fromLanguage, toLanguage, text)

  13.  

  14. if __name__ == "__main__":

  15.         main(sys.argv[1:])



Ну вот и подружились =):

>./gt.py enru "Hello world"

Привет мир

Простенький скриптик всего с 2-мя аргументами. Первый аргумент состаит из двух частей, первые 2-е буквы это язык из которого переводим, вторые 2-е в который переводим. Ну а второй аргумент собственно что переводим.

Сорци всего этого добра можно найти Тут
Всем спосибо кто дочитался до этих строк.
Всего доброго...

Читать далее