Искренне радуюсь, когда такие вещи публичны и общедоступны. В 2009 году у меня было несколько программок, в которых я использовал доступный тогда Google translate API. Однако корпорация добра вскоре закрыла свой сервис, и мои программки сразу же стали бесполезны, ибо они небыли платными и зависеть от платного сервиса не могли.
Сегодня нас радует Яндекс. Спасибо, ребята за очень полезный открытый API. Не закрывайте его пожалуйста!
Вот примитивный микропример перевода с русского:
# -*- coding: utf-8 -*- import urllib2 from xml.dom import minidom def detect_lang(text): request = r'http://translate.yandex.net/api/v1/tr/detect?text=' + urllib2.quote(text) response = urllib2.urlopen(request) xml_string = response.read() xmldoc = minidom.parseString(xml_string) src_direction = xmldoc.getElementsByTagName('DetectedLang') return src_direction[0].getAttribute('lang') def directions(): request = r'http://translate.yandex.net/api/v1/tr/getLangs' response = urllib2.urlopen(request) xml_string = response.read() xmldoc = minidom.parseString(xml_string) directions_nodes_list = xmldoc.getElementsByTagName('string') for direction in directions_nodes_list: yield direction.firstChild.nodeValue def translate(direction, text): text = urllib2.quote(text) request = r'http://translate.yandex.net/api/v1/tr/translate?lang=' + direction + r'&text=' + text response = urllib2.urlopen(request) xml_string = response.read() xmldoc = minidom.parseString(xml_string) child = xmldoc.firstChild bottom = child while True: bottom = child.firstChild if bottom is None: break child = bottom return child.data text_to_translate = 'Я очень люблю программирование.' src_lang = detect_lang(text_to_translate).strip() for direction in directions(): if direction[0:2] == src_lang: print direction, ':', translate(direction, text_to_translate)
При выполнении этого Python скрипта вы получите такой вывод в консоль:
ru-en : I love programming.
ru-pl : Ja bardzo lubię programowanie.
ru-uk : Я дуже люблю програмування.
ru-de : Ich Liebe Programmierung.
ru-fr : J'aime beaucoup la programmation.
ru-es : Me encanta la programación.
ru-it : Mi piace molto la programmazione.
ru-bg : Аз много обичам програмиране.
ru-cs : Jsem velmi rád programování.
ru-tr : Ben çok seviyorum programlama.
ru-ro : Îmi place foarte mult de programare.
ru-sr : Ја веома волим програмирање.
Это есть перевод с русского на все остальные доступные для этого сервиса направления.
Скрипт упрощенно использует все три доступные на сегодняшний день функции:
- определяет язык с которого осуществлять перевод (метод detect)
- получает список всех возможных направлений перевода (метод getLangs)
- переводит текст на все известные сервису другие языки (метод translate)
Комментариев нет:
Отправить комментарий