google_translate 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/EXAMPLES +11 -6
  2. data/lib/google_translate.rb +53 -4
  3. metadata +1 -1
data/EXAMPLES CHANGED
@@ -6,11 +6,16 @@
6
6
 
7
7
  tr = Google::Translate.new
8
8
 
9
- # from English to Dutch
10
- tr.translate :from => "en", :to => "nl", :text => "Hello, World!"
11
- => "Hallo, Wereld!"
9
+ # from English to German
10
+ tr.translate :from => "en", :to => "es", :text => "Hello, World!"
11
+ => Hallo, Welt!
12
+
13
+ # from English to Spanish
14
+ tr.translate :from => "en", :to => "hi", :text => "Hello, World!"
15
+ => Hola, Mundo!
16
+
17
+
18
+ # WWW::Mechanize constructor usage
19
+ tr = Google::Translate.new { |agent| agent.user_agent_alias = 'Mac Safari' }
12
20
 
13
- # from English to Italian
14
- tr.translate :from => "en", :to => "it", :text => "Hello, World!"
15
- => "Ciao, mondo!"
16
21
 
@@ -1,23 +1,72 @@
1
1
  require 'rubygems'
2
2
  require 'mechanize'
3
+ require 'iconv'
3
4
 
4
5
  module Google
5
6
  class Translate < WWW::Mechanize
7
+
8
+ LANG = { :bg => { :in => 'iso-8859-5', :out => 'utf-8', :lang => 'Bulgarian' },
9
+ :ja => { :in => 'shift-jis', :out => 'utf-8', :lang => 'Japanese' },
10
+ :ru => { :in => 'koi8-r', :out => 'utf-8', :lang => 'Russian' },
11
+ :ko => { :in => 'euc-kr', :out => 'utf-8', :lang => 'Korean' },
12
+ :ar => { :in => 'iso-8859-6', :out => 'utf-8', :lang => 'Arabic' },
13
+ :hr => { :in => 'iso-8859-2', :out => 'utf-8', :lang => 'Croatian' },
14
+ :cs => { :in => 'iso-8859-2', :out => 'utf-8', :lang => 'Czech' },
15
+ :pl => { :in => 'iso-8859-2', :out => 'utf-8', :lang => 'Polish' },
16
+ :da => { :in => 'iso-8859-1', :out => 'utf-8', :lang => 'Danish' },
17
+ :nl => { :in => 'iso-8859-1', :out => 'utf-8', :lang => 'Dutch' },
18
+ :en => { :in => 'iso-8859-1', :out => 'utf-8', :lang => 'English' },
19
+ :fi => { :in => 'iso-8859-1', :out => 'utf-8', :lang => 'Finnish' },
20
+ :fr => { :in => 'iso-8859-1', :out => 'utf-8', :lang => 'French' },
21
+ :de => { :in => 'iso-8859-1', :out => 'utf-8', :lang => 'German' },
22
+ :it => { :in => 'iso-8859-1', :out => 'utf-8', :lang => 'Italian' },
23
+ :no => { :in => 'iso-8859-1', :out => 'utf-8', :lang => 'Norwegian' },
24
+ :es => { :in => 'iso-8859-1', :out => 'utf-8', :lang => 'Spanish' },
25
+ :pt => { :in => 'iso-8859-1', :out => 'utf-8', :lang => 'Portuguese' },
26
+ :el => { :in => 'iso-8859-7', :out => 'utf-8', :lang => 'Greek' },
27
+ :hi => { :in => 'iso-8859-13', :out => 'utf-8', :lang => 'Hindi' },
28
+ :ro => { :in => 'iso-8859-2', :out => 'utf-8', :lang => 'Romanian' },
29
+ :"zh-CN" => { :in => 'gb18030', :out => 'utf-8', :lang => 'Chinese Simplified' },
30
+ :"zh-TW" => { :in => 'bit5', :out => 'utf-8', :lang => 'Chinese Traditional' } }
31
+
32
+ URL = "http://translate.google.com/translate_t"
33
+
34
+ # Takes source and destination languages, and text.
35
+ # Returns utf-8 encoded string.
36
+ # translate(:from => 'en', :to => 'ja', :text => 'Hello, World!')
6
37
  def translate(params={})
7
38
  from = params[:from]
8
39
  to = params[:to]
9
40
  text = params[:text]
41
+
10
42
  if !text or text.empty?
11
43
  raise ArgumentError, "No text given", caller
12
44
  end
13
- self.post("http://translate.google.com/translate_t",
14
- "sl" => from,
15
- "tl" => to,
16
- "text" => text).search("#result_box").inner_html
45
+
46
+ if !LANG.key?(to.to_sym)
47
+ raise ArgumentError, "Invalid 'to' language given", caller
48
+ end
49
+
50
+ if !LANG.key?(from.to_sym)
51
+ raise ArgumentError, "Invalid 'from' language given", caller
52
+ end
53
+
54
+ result = self.post(URL,
55
+ "sl" => from,
56
+ "tl" => to,
57
+ "text" => text).search("#result_box").inner_html
58
+
59
+ Iconv.new(LANG[to.to_sym][:out], LANG[to.to_sym][:in]).iconv(result)
17
60
  end
18
61
 
19
62
  def new(*args)
20
63
  super
21
64
  end
65
+
66
+ # Returns the languages' names, their abbreviations and Google encoding.
67
+ def self.languages
68
+ langs = LANG.sort_by{ |e| e[1][:lang] }
69
+ langs.each{ |e| print e[0], "\t", e[1][:lang], "\n" }
70
+ end
22
71
  end
23
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_translate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vidul Nikolaev Petrov