シンプルなRubyトランスレーター

mechanizeとhpricotを使用して、非常に役立つ翻訳クラスを作成しました。



現時点では、translate.meta.ua、translate.google.com、pereklad.online.uaの翻訳に3台のサーバーを使用できます



コード例:


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








誰かが興味があるなら、私はすべてのコードを与えることができます:)



All Articles