googletranslate 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2007 Dingding Ye
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Manifest.txt ADDED
@@ -0,0 +1,9 @@
1
+ MIT-LICENSE
2
+ Manifest.txt
3
+ README
4
+ Rakefile
5
+ bin/rtranslate
6
+ lib/rtranslate.rb
7
+ lib/rtranslate/language.rb
8
+ lib/rtranslate/rtranslate.rb
9
+ tests/ts_translate.rb
data/README ADDED
@@ -0,0 +1,28 @@
1
+ = google-api-transalte-ruby
2
+ A simple, unofficial, ruby client API for using Google Translate.
3
+
4
+ == Install
5
+
6
+ sudo gem install rtranslate
7
+
8
+ == Usage
9
+ 1.
10
+ {{{
11
+ require "rtranslate"
12
+ result = Translate.t("xxx", Language::English, Language::CHINESE_SIMPLIFIED)
13
+ }}}
14
+
15
+ 2.
16
+ {{{
17
+ $rtranslate -f en -t zh-CN xxx
18
+ }}}
19
+
20
+ == CHANGES
21
+ v0.2 Nov 16, 2007
22
+ * add a command line tool.
23
+
24
+ v0.1 Nov 15, 2007
25
+ * initial release
26
+
27
+ Copyright (c) 2007 Dingding Ye <yedingding@gmail.com>
28
+ Distributed under MIT License
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+ require 'hoe'
3
+
4
+ Hoe.new('googletranslate', '0.2') do |p|
5
+ p.rubyforge_name = 'googletranslate'
6
+ p.author = 'Ye Dingding'
7
+ p.email = 'yedingding@gmail.com'
8
+ p.url = 'http://sishen.lifegoo.com'
9
+ p.summary = 'Google translate ruby client api'
10
+ p.description = 'A simple, unofficial, ruby client API for using Google Translate.'
11
+ p.extra_deps << ['hpricot', '>= 0.4']
12
+ end
data/bin/rtranslate ADDED
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift(File::join(File::dirname(File::dirname(__FILE__)), "lib"))
4
+
5
+ require 'rtranslate'
6
+ require 'optparse'
7
+
8
+ options = {}
9
+ opts = OptionParser.new do |opts|
10
+ opts.banner = <<-EOF
11
+ Usage:
12
+ rtranslate -f lang -t lang text
13
+ EOF
14
+
15
+ opts.on("-fLANG", "--from LANG", "From Language LANG") do |x|
16
+ options[:from] = x
17
+ end
18
+
19
+ opts.on("-tLANG", "--to LANG", "To Language LANG") do |x|
20
+ options[:to] = x
21
+ end
22
+
23
+ opts.on("-h", "--help", "Show this message") do
24
+ puts opts
25
+ exit
26
+ end
27
+ end
28
+
29
+ opts.parse!(ARGV)
30
+ text = ARGV.shift
31
+
32
+ if options[:from].nil? || options[:to].nil? || text.empty?
33
+ puts opts
34
+ exit
35
+ end
36
+
37
+ STDOUT.puts(Translate.t(text, options[:from], options[:to]))
data/lib/rtranslate.rb ADDED
@@ -0,0 +1,21 @@
1
+ require 'rtranslate/language'
2
+ require 'rtranslate/rtranslate'
3
+ require 'uri'
4
+ require 'open-uri'
5
+
6
+ begin
7
+ require 'hpricot'
8
+ rescue LoadError
9
+ require 'rubygems'
10
+ require 'hpricot'
11
+ end
12
+
13
+ include Translate
14
+ def Translate.t(text, from, to)
15
+ begin
16
+ RTranslate.translate(text, from, to)
17
+ rescue
18
+ "Error: " + $!
19
+ end
20
+ end
21
+
@@ -0,0 +1,26 @@
1
+ module Translate
2
+ module Language
3
+ ARABIC = 'ar'
4
+ CHINESE = 'zh'
5
+ CHINESE_SIMPLIFIED = 'zh-CN'
6
+ CHINESE_TRADITIONAL = 'zh-TW'
7
+ DUTCH = 'nl'
8
+ ENGLISH = 'en'
9
+ FRENCH = 'fr'
10
+ GERMAN = 'de'
11
+ GREEK = 'el'
12
+ ITALIAN = 'it'
13
+ JAPANESE = 'ja'
14
+ KOREAN = 'ko'
15
+ PORTUGUESE = 'pt'
16
+ RUSSIAN = 'ru'
17
+ SPANISH = 'es'
18
+
19
+
20
+ AVAILABLE_PAIR = ["ar|en", "zh|en", "zh-CN|zh-TW", "zh-TW|zh-CN", "nl|en", "en|ar", "en|zh-CN",
21
+ "en|zh-TW", "en|nl", "en|fr", "en|de", "en|el", "en|it", "en|ja", "en|ko",
22
+ "en|pt", "en|ru", "en|es", "fr|en", "fr|de", "de|en", "de|fr", "el|en",
23
+ "it|en", "ja|en", "ko|en", "pt|en", "ru|en", "es|en"
24
+ ]
25
+ end
26
+ end
@@ -0,0 +1,24 @@
1
+ module Translate
2
+ class UnsupportedLanguagePair < StandardError
3
+ end
4
+
5
+ class RTranslate
6
+ @@GT_URL = "http://www.google.com/translate_t?langpair="
7
+ @@PARAMS = {"User-Agent"=>"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9", "Connection"=>"Keep-Alive", "Keep-Alive"=>"30"}
8
+
9
+ class << self
10
+ def translate(text, from, to)
11
+ langpair = "#{from}|#{to}"
12
+ if Language::AVAILABLE_PAIR.include?(langpair)
13
+ url = @@GT_URL + langpair + "&text=" + text
14
+ doc = open(URI.escape(url), @@PARAMS) { |f| Hpricot(f)}
15
+ return doc.search("//div#result_box").inner_text
16
+ else
17
+ raise UnsupportedLanguagePair, "Translation from '#{from}' to '#{to}' isn't supported yet!"
18
+ end
19
+ end
20
+
21
+ alias_method :t, :translate
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,31 @@
1
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../lib")
2
+
3
+ require 'test/unit'
4
+ require 'rtranslate'
5
+
6
+ class TranslateTest < Test::Unit::TestCase
7
+ include Language
8
+ def test_english_translate
9
+ assert_equal("مرحبا العالم", Translate.t("Hello world", ENGLISH, ARABIC));
10
+ assert_equal("你好世界", Translate.t("Hello world", ENGLISH, CHINESE_SIMPLIFIED));
11
+ assert_equal("Bonjour le monde", Translate.t("Hello world", ENGLISH, FRENCH));
12
+ assert_equal("Hallo welt", Translate.t("Hello world", ENGLISH, GERMAN));
13
+ assert_equal("Ciao a tutti", Translate.t("Hello world", ENGLISH, ITALIAN));
14
+ assert_equal("こんにちは世界", Translate.t("Hello world", ENGLISH, JAPANESE));
15
+ assert_equal("여러분, 안녕하세요", Translate.t("Hello world", ENGLISH, KOREAN));
16
+ assert_equal("Olá mundo", Translate.t("Hello world", ENGLISH, PORTUGUESE));
17
+ assert_equal("Привет мир", Translate.t("Hello world", ENGLISH, RUSSIAN));
18
+ assert_equal("Hola mundo", Translate.t("Hello world", ENGLISH, SPANISH));
19
+ end
20
+
21
+ def test_chinese_translate
22
+ assert_equal("Hello World", Translate.t("你好世界", CHINESE, ENGLISH))
23
+ assert_equal("Hello World", Translate.t("你好世界", 'zh', 'en'))
24
+ end
25
+
26
+ def test_unsupported_translate
27
+ assert_raise UnsupportedLanguagePair do
28
+ Translate_t("Hello World", Translate.t("你好世界", 'zh-CN', 'en'))
29
+ end
30
+ end
31
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.4
3
+ specification_version: 1
4
+ name: googletranslate
5
+ version: !ruby/object:Gem::Version
6
+ version: "0.2"
7
+ date: 2007-11-17 00:00:00 +08:00
8
+ summary: Google translate ruby client api
9
+ require_paths:
10
+ - lib
11
+ email: yedingding@gmail.com
12
+ homepage: http://sishen.lifegoo.com
13
+ rubyforge_project: googletranslate
14
+ description: A simple, unofficial, ruby client API for using Google Translate.
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Ye Dingding
31
+ files:
32
+ - MIT-LICENSE
33
+ - Manifest.txt
34
+ - README
35
+ - Rakefile
36
+ - bin/rtranslate
37
+ - lib/rtranslate.rb
38
+ - lib/rtranslate/language.rb
39
+ - lib/rtranslate/rtranslate.rb
40
+ - tests/ts_translate.rb
41
+ test_files: []
42
+
43
+ rdoc_options:
44
+ - --main
45
+ - README.txt
46
+ extra_rdoc_files:
47
+ - Manifest.txt
48
+ executables:
49
+ - rtranslate
50
+ extensions: []
51
+
52
+ requirements: []
53
+
54
+ dependencies:
55
+ - !ruby/object:Gem::Dependency
56
+ name: hpricot
57
+ version_requirement:
58
+ version_requirements: !ruby/object:Gem::Version::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: "0.4"
63
+ version:
64
+ - !ruby/object:Gem::Dependency
65
+ name: hoe
66
+ version_requirement:
67
+ version_requirements: !ruby/object:Gem::Version::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: 1.3.0
72
+ version: