sermoa-ruby_translate 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/ruby_translate.rb +70 -0
  2. metadata +62 -0
@@ -0,0 +1,70 @@
1
+ # RubyTranslate provides a simple wrapper around the Google Translate API for detecting and translating languages
2
+ #
3
+ # Author:: Aimee Daniells (mailto:aimee@edendevelopment.co.uk)
4
+ # License:: MIT License
5
+
6
+ require 'net/http'
7
+ require 'uri'
8
+ require 'cgi'
9
+ require 'json'
10
+
11
+ # Uses Google Translate to detect and translate languages.
12
+ #
13
+ # Google documentation here:
14
+ # http://code.google.com/apis/ajaxlanguage/documentation/reference.html#_intro_fonje
15
+ module RubyTranslate
16
+
17
+ # Translate a string from one language to another.
18
+ # The <tt>from</tt> parameter is optional -
19
+ # if you don't specify it, detect will be used to guess.
20
+ #
21
+ # Examples:
22
+ #
23
+ # RubyTranslate.translate("Mein Luftkissenfahrzeug ist voller Aale", "en")
24
+ # => "My hovercraft is full of eels"
25
+ #
26
+ # RubyTranslate.translate("Il y a un singe qui vole dans l'arbre.", "en")
27
+ # => "There is a flying monkey in the tree."
28
+ #
29
+ # RubyTranslate.translate("They are singing in St Peter's Square", "it")
30
+ # => "Essi sono il canto, in Piazza San Pietro"
31
+ #
32
+ # RubyTranslate.translate("Eu queria um outro pedacinho de Apfelstrudel, por favor", "sv", "pt")
33
+ # => "Jag ville ha en bit av Apfelstrudel, tack"
34
+ #
35
+ # Google Translate is not always perfect! Hopefully you already know that!
36
+ #
37
+ def self.translate(text, to, from=nil)
38
+ from = detect(text) if from.nil?
39
+ json = run('translate', {:langpair => "#{from}|#{to}", :q => text})
40
+ return json['responseData']['translatedText'] if json['responseStatus'] == 200
41
+ raise StandardError, json['responseDetails']
42
+ end
43
+
44
+ # Detect a language given a string of text.
45
+ #
46
+ # Examples:
47
+ #
48
+ # RubyTranslate.detect("Mein Luftkissenfahrzeug ist voller Aale")
49
+ # => "de"
50
+ #
51
+ # RubyTranslate.detect("Safisha viatu yangu mara moja!")
52
+ # => "sw"
53
+ #
54
+ def self.detect(text)
55
+ json = run('detect', {:q => text})
56
+ return json['responseData']['language'] if json['responseStatus'] == 200
57
+ raise StandardError, json['responseDetails']
58
+ end
59
+
60
+ private
61
+
62
+ def self.run(service, parameters)
63
+ base = 'http://ajax.googleapis.com/ajax/services/language'
64
+ parameters.merge!({:v => 1.0})
65
+ query = parameters.map{|k,v| "#{k}=#{CGI.escape(v.to_s)}"}.join('&')
66
+ response = Net::HTTP.get_response(URI.parse("#{base}/#{service}?#{query}"))
67
+ JSON.parse(response.body)
68
+ end
69
+
70
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sermoa-ruby_translate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Aimee Daniells
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-06-15 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: json
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.1.3
24
+ version:
25
+ description: RubyTranslate provides a simple wrapper around the Google Translate API for detecting and translating languages.
26
+ email: aimee@edendevelopment.co.uk
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files: []
32
+
33
+ files:
34
+ - lib/ruby_translate.rb
35
+ has_rdoc: true
36
+ homepage: http://www.edendevelopment.co.uk
37
+ post_install_message:
38
+ rdoc_options: []
39
+
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ version:
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: "0"
53
+ version:
54
+ requirements: []
55
+
56
+ rubyforge_project:
57
+ rubygems_version: 1.2.0
58
+ signing_key:
59
+ specification_version: 2
60
+ summary: An easy way to access the Google Translate API via Ruby.
61
+ test_files: []
62
+