class GoogleDictionary
Class for the Google
Dictionary
(actually Translate)
Constants
- API_URL
Public Class Methods
name()
click to toggle source
# File lib/dictionaries/google_dictionary.rb, line 9 def self.name 'Google Translate' end
Public Instance Methods
define(word, source, target, options = {})
click to toggle source
# File lib/dictionaries/google_dictionary.rb, line 40 def define(word, source, target, options = {}) fail "Unknown language code '#{source}'" unless langs.include?(source) fail "Unknown language code '#{target}'" unless langs.include?(target) if options[:tts] audio_file = StringUtil.tts_file_name(word, source, 'google') get_pronunciation(word, source, audio_file) unless File.exist?(audio_file) end json = JSON.parse(get_data(word, source, target, options)) render extract_definitions(json) end
langs()
click to toggle source
# File lib/dictionaries/google_dictionary.rb, line 17 def langs { 'af' => 'Afrikaans', 'sq' => 'Albanian', 'ar' => 'Arabic', 'hy' => 'Armenian', 'az' => 'Azerbaijani', 'eu' => 'Basque', 'be' => 'Belarusian', 'bg' => 'Bulgarian', 'ca' => 'Catalan', 'hr' => 'Croatian', 'cs' => 'Czech', 'et' => 'Estonian', 'da' => 'Danish', 'nl' => 'Dutch', 'en' => 'English', 'tl' => 'Filipino', 'fi' => 'Finnish', 'fr' => 'French', 'gl' => 'Galician', 'ht' => 'Haitian, Creole', 'is' => 'Icelandic', 'ka' => 'Georgian', 'de' => 'German', 'el' => 'Greek', 'iw' => 'Hebrew', 'hi' => 'Hindi', 'hu' => 'Hungarian', 'id' => 'Indonesian', 'ga' => 'Irish', 'it' => 'Italian', 'ko' => 'Korean', 'la' => 'Latin', 'lv' => 'Latvian', 'mk' => 'Macedonian', 'ms' => 'Malay', 'mt' => 'Maltese', 'fa' => 'Persian', 'pl' => 'Polish', 'pt' => 'Portuguese', 'ro' => 'Romanian', 'sl' => 'Slovenian', 'th' => 'Thai', 'ja' => 'Japanese', 'lt' => 'Lithuanian', 'no' => 'Norwegian', 'vi' => 'Vietnamese', 'cy' => 'Welsh', 'yi' => 'Yiddish', 'ru' => 'Russian', 'sr' => 'Serbian', 'sk' => 'Slovak', 'es' => 'Spanish', 'sw' => 'Swahili', 'sv' => 'Swedish', 'tr' => 'Turkish', 'uk' => 'Ukrainian', 'ur' => 'Urdu', 'zh-TW' => 'Chinese, (Traditional)', 'zh-CN' => 'Chinese, (Simplified)' } end
provide_tts?()
click to toggle source
# File lib/dictionaries/google_dictionary.rb, line 13 def provide_tts? true end
Private Instance Methods
extract_definitions(json)
click to toggle source
# File lib/dictionaries/google_dictionary.rb, line 55 def extract_definitions(json) result = [] if json.include?('dict') json['dict'].each do |item| definition = { class: item['pos'], entries: [] } item['entry'].each do |e| data = { word: e['word'], score: (e['score'] || 1e9) } definition[:entries] << data end result << definition end elsif json.include?('sentences') json['sentences'].each do |item| if item.include?('trans') definition = { class: 'translation', entries: [] } definition[:entries] << { word: item['trans'], score: 0 } result << definition break end end end result end
render(result)
click to toggle source
# File lib/dictionaries/google_dictionary.rb, line 79 def render(result) output = '' result.each do |entry| output << "#{entry[:class]}\n#{'-' * entry[:class].length}\n" entry[:entries].sort! { |x, y| x[:score] <=> y[:score] } output << entry[:entries].map { |e| e[:word] }.join(', ') + "\n\n" end output end