Skip to content

Instantly share code, notes, and snippets.

@stpnlr
Created October 8, 2011 10:26

Revisions

  1. stpnlr created this gist Oct 8, 2011.
    1 change: 1 addition & 0 deletions example
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    ml =GoogleTransliterate.new('poda poda').transliterated_text
    50 changes: 50 additions & 0 deletions google_transliterate.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,50 @@
    require 'json'
    require 'open-uri'
    class GoogleTransliterate
    API_URL = "http://www.google.com/uds/Gtransliterate"
    EN_ML_PARAM = "?context=22&langpair=en|ml&key=notsupplied&v=1.0"
    def initialize(words_array)
    if words_array.length > 5
    raise 'TooManyWords'
    else
    @words = words_array
    end
    end
    def param
    '&q='+@words.join('&q=')
    end
    def result
    @result ||=JSON.parse(open(URI.encode(API_URL+EN_ML_PARAM+param)).read)
    end
    def transliterated_text
    result_str = result
    if result_str['responseStatus']==200
    resp = result_str['responseData']
    mal = ''
    unless resp.nil?
    result_str['responseData']['transliterations'].each do |trans|
    mal += (trans['transliteratedWords'][0] unless trans['transliteratedWords'].nil?)||trans['sourceWord']
    end
    end
    mal
    else
    raise result_str['responseDetails']
    nil
    end
    end
    end

    class Transliterator
    def initialize(source_text)
    words = source_text.split(/(\W)/)
    @words = words.each_slice(5)
    end
    def result
    result_text = ''
    @words.each do |words|
    ml =GoogleTransliterate.new(words).transliterated_text
    result_text += ml
    end
    result_text
    end
    end