http://super-p.habrahabr.ru/blog/62856/
С помощью mechanize и hpricot написал класс очень полезного переводчика.
На даный момент доступно 3 сервера для перевода translate.meta.ua, translate.google.com и pereklad.online.ua
Пример кода:
def initialize(url=:meta)
Hpricot.buffer_size = 2621444
@agent = WWW::Mechanize.new
@url = url || :meta
@url = :meta unless BASE_URL.keys.include?(url)
@page = @agent.get BASE_URL[url]
end
def ru_to_ua(text)
translate(@url, :ru, :ua, text)
end
def translate(url, lang_from, lang_to, text)
self.send "translate_#{url.to_s}", text, @@default_options[url][lang_from.to_sym], @@default_options[url][lang_to.to_sym]
end
def translate_meta(text, lang_from, lang_to)
form = @page.form_with(:name => "form1")
form.field_with(:name => "SrcTxt").value = text
form.field_with(:name => "language").value = "{lang_from}-{lang_to}"
results = @agent.submit(form)
Hpricot(results.body).at('//textarea[@name="DstTxt"]').inner_text
end
Пример использования:
tr = Translate.new(:online)
tr.ru_to_en("пример") # => example
tr.en_to_ru("see") # => видеть
tr.ru_to_ua("пример") # => приклад
Мне эта штука очень пригодилась. Например, нужно было перевести колонку в файле xsl с украинского на русский (50 000 данных). Программа сделала это за 2-3 часа.
excel = WIN32OLE.new('excel.application')
excel.visible = true
excel.workbooks.open("шото.xlsx")
trans = Translate.new(:meta)
50000.times do |i|
if i>1
str = trans.ua_to_ru(excel.range('B' + i.to_s).value)
excel.range('C' + i.to_s).value = str
end
end
Если кому интересно, могу дать весь код :)
Подписаться на:
Комментарии к сообщению (Atom)
Ярлыки
- картинки (1)
- команды (7)
- скрипт (2)
- терминал (17)
- шахматы (1)
- apt (2)
- asterisk (2)
- chmod (1)
- clamav (1)
- CoffeeScript (1)
- conky (1)
- cron (1)
- deb (1)
- Freeciv (1)
- ftp (1)
- gedit (2)
- gem (3)
- gimp (1)
- git (4)
- grep (1)
- IceWM (1)
- IDE (1)
- joomla (4)
- links2 (1)
- Linux (13)
- mplayer (2)
- ntpdate (1)
- Philips (1)
- rails (8)
- ruby (22)
- SciTE (1)
- ssh (2)
- tftp (1)
- ubuntu (10)
- vim (6)
- web разработка (1)
- wget (1)
- Windows (1)
- www (4)
- Xming (1)
Архив блога
-
▼
2010
(51)
-
▼
марта
(16)
- Ruby FTP, копирование файла на FTP
- Создание и удаление папок в Ruby
- изменение качества изображения из командной строки
- Пересборка deb-пакета в Debian/Ubuntu
- Git через proxy
- Переводчик для VIM
- Консольные хитрости
- Пример скрипта
- Антивирус СlamAV
- Точное время в Debian
- Удаленное подключение к рабочему столу Linux из Wi...
- Установка и настройка IceWM в минимальной конфигур...
- Основы управления доступом к файлам
- Links2 - продвинутый консольный браузер для Linux
- Настройка conky: Индикация состояния системы в Linux
- Простой переводчик на Ruby
-
▼
марта
(16)
Комментариев нет:
Отправить комментарий