opengotham-rtranslate 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ .svn
2
+ **/.svn
3
+ **/**/.svn
4
+ pkg
data/History.txt ADDED
@@ -0,0 +1,19 @@
1
+ V1.3 Dec 18th, 2009
2
+ * Enable the translation for the long string which is supposed to be more than 500 characters. The lib will split the text into several groups 500 by 500 and then join the response translated text together.
3
+
4
+ V1.2 Sep 17th, 2009
5
+ * Enable the auto-detect source features of google translate api
6
+
7
+ V1.1 July 11th, 2009
8
+ * Add Google AJAX Language Dection support
9
+
10
+ v1.0 Dec 16th, 2008
11
+ * using the Google AJAX Language API instead of scrape
12
+ * add the batch translation support
13
+ * refactor the whole project
14
+
15
+ v0.2 Nov 16, 2007
16
+ * add a command line tool.
17
+
18
+ v0.1 Nov 15, 2007
19
+ * initial release
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,13 @@
1
+ History.txt
2
+ MIT-LICENSE
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ bin/rtranslate
7
+ lib/rtranslate.rb
8
+ lib/rtranslate/language.rb
9
+ lib/rtranslate/rtranslate.rb
10
+ lib/rtranslate/detection.rb
11
+ rtranslate.gemspec
12
+ tests/ts_translate.rb
13
+ tests/ts_detection.rb
data/README.txt ADDED
@@ -0,0 +1,25 @@
1
+ = google-api-transalte-ruby
2
+ A simple, unofficial, ruby client API for using Google Translate.
3
+
4
+ == Install
5
+
6
+ sudo gem install sishen-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
+ Check test for more examples
21
+
22
+ == COPYRIGHT
23
+
24
+ Copyright (c) 2007 Dingding Ye <yedingding@gmail.com>
25
+ Distributed under MIT License
data/Rakefile ADDED
@@ -0,0 +1,23 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'rcov/rcovtask'
5
+ require 'rake/rdoctask'
6
+
7
+ begin
8
+ require 'jeweler'
9
+ Jeweler::Tasks.new do |g|
10
+ g.name = 'opengotham-rtranslate'
11
+ g.summary = %(Google translate ruby client api)
12
+ g.description = %(A simple, unofficial, ruby client API for using Google Translate.)
13
+ g.email = 'mjording@openogotham.com'
14
+ g.homepage = 'http://github.com/opengotham/rtranslate'
15
+ g.authors = %w(opengotham)
16
+ g.add_dependency 'json', '>= 1.1.3'
17
+ g.add_development_dependency 'shoulda'
18
+ g.add_development_dependency 'mocha'
19
+ end
20
+ Jeweler::GemcutterTasks.new
21
+ rescue LoadError
22
+ puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
23
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.3.0
data/bin/rtranslate ADDED
@@ -0,0 +1,46 @@
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
+ rtranslate -d text
14
+ EOF
15
+
16
+ opts.on("-fLANG", "--from LANG", "From Language LANG") do |x|
17
+ options[:from] = x
18
+ end
19
+
20
+ opts.on("-tLANG", "--to LANG", "To Language LANG") do |x|
21
+ options[:to] = x
22
+ end
23
+
24
+ opts.on("-d", "--detect", "Detect the text") do
25
+ options[:detect] = true
26
+ end
27
+
28
+ opts.on("-h", "--help", "Show this message") do
29
+ puts opts
30
+ exit
31
+ end
32
+ end
33
+
34
+ opts.parse!(ARGV)
35
+ text = ARGV.shift
36
+
37
+ unless (options[:detect] || options[:to] ) && text
38
+ puts opts
39
+ exit
40
+ end
41
+
42
+ if options[:detect]
43
+ STDOUT.puts(Translate.d(text))
44
+ else
45
+ STDOUT.puts(Translate.t(text, options[:from], options[:to]))
46
+ end
data/lib/rtranslate.rb ADDED
@@ -0,0 +1,31 @@
1
+ require File.join(File.dirname(__FILE__), 'rtranslate/language')
2
+ require File.join(File.dirname(__FILE__), 'rtranslate/rtranslate')
3
+ require File.join(File.dirname(__FILE__), 'rtranslate/detection')
4
+ require 'uri'
5
+ require 'open-uri'
6
+
7
+ begin
8
+ require 'json'
9
+ rescue LoadError
10
+ require 'rubygems'
11
+ require 'json'
12
+ end
13
+
14
+ unless defined?(ActiveSupport)
15
+ require 'activesupport'
16
+ end
17
+
18
+ $KCODE = 'u'
19
+
20
+ include Translate
21
+ def Translate.t(text, from, to)
22
+ RTranslate.translate(text, from, to)
23
+ rescue
24
+ "Error: " + $!
25
+ end
26
+
27
+ def Translate.d(text)
28
+ Detection.detect(text)
29
+ rescue
30
+ "Error: " + $!
31
+ end
@@ -0,0 +1,70 @@
1
+ # The program is a simple, unofficial, ruby client API
2
+ # for using Google Translate.
3
+ #
4
+ # Author:: Dingding Ye (mailto:yedingding@gmail.com)
5
+ # Copyright:: Copyright (c) 2007 Dingding Ye
6
+ # License:: Distributes under MIT License
7
+
8
+ module Translate
9
+ class DetectionResponse
10
+ attr_reader :abbrev
11
+ attr_reader :language
12
+ attr_reader :reliability
13
+ attr_reader :confidence
14
+
15
+ def initialize(json)
16
+ @abbrev = json["language"]
17
+ @language = Google::Language::Languages[@abbrev]
18
+ @reliability = json["isReliable"]
19
+ @confidence = json["confidence"]
20
+ end
21
+
22
+ def to_s
23
+ abbrev
24
+ end
25
+ end
26
+
27
+ class Detection
28
+ # Google AJAX Language REST Service URL
29
+ GOOGLE_DETECTION_URL = "http://ajax.googleapis.com/ajax/services/language/detect"
30
+
31
+ # Default version of Google AJAX Language API
32
+ DEFAULT_VERSION = "1.0"
33
+
34
+ attr_reader :version, :key
35
+
36
+ class << self
37
+ def detect(text)
38
+ Detection.new.detect(text)
39
+ end
40
+ alias_method :d, :detect
41
+ end
42
+
43
+ def initialize(version = DEFAULT_VERSION, key = nil)
44
+ @version = version
45
+ @key = key
46
+ end
47
+
48
+ def detect(text, details = false)
49
+ url = "#{GOOGLE_DETECTION_URL}?q=#{text}&v=#{@version}"
50
+ if @key
51
+ url << "&key=#{@key}"
52
+ end
53
+ detection_response = do_detect(url)
54
+ details ? detection_response : detection_response.abbrev
55
+ end
56
+
57
+ private
58
+ def do_detect(url)
59
+ jsondoc = open(URI.escape(url)).read
60
+ response = JSON.parse(jsondoc)
61
+ if response["responseStatus"] == 200
62
+ DetectionResponse.new(response["responseData"])
63
+ else
64
+ raise StandardError, response["responseDetails"]
65
+ end
66
+ rescue Exception => e
67
+ raise StandardError, e.message
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,123 @@
1
+ module Google
2
+ module Language
3
+ {"lo"=>"LAOTHIAN",
4
+ "ta"=>"TAMIL",
5
+ "eu"=>"BASQUE",
6
+ "iw"=>"HEBREW",
7
+ "my"=>"BURMESE",
8
+ "uk"=>"UKRAINIAN",
9
+ "sk"=>"SLOVAK",
10
+ "ky"=>"KYRGYZ",
11
+ "zh-TW"=>"CHINESE_TRADITIONAL",
12
+ "pa"=>"PUNJABI",
13
+ "sl"=>"SLOVENIAN",
14
+ "ps"=>"PASHTO",
15
+ "ru"=>"RUSSIAN",
16
+ "mk"=>"MACEDONIAN",
17
+ "zh"=>"CHINESE",
18
+ "te"=>"TELUGU",
19
+ "bn"=>"BENGALI",
20
+ "cy"=>"WELSH",
21
+ "hr"=>"CROATIAN",
22
+ "ml"=>"MALAYALAM",
23
+ "lt"=>"LITHUANIAN",
24
+ "bo"=>"TIBETAN",
25
+ "ja"=>"JAPANESE",
26
+ "tg"=>"TAJIK",
27
+ "af"=>"AFRIKAANS",
28
+ "fr"=>"FRENCH",
29
+ "kk"=>"KAZAKH",
30
+ "th"=>"THAI",
31
+ "sq"=>"ALBANIAN",
32
+ "fa"=>"PERSIAN",
33
+ "lv"=>"LATVIAN",
34
+ "vi"=>"VIETNAMESE",
35
+ "ur"=>"URDU",
36
+ "az"=>"AZERBAIJANI",
37
+ "ne"=>"NEPALI",
38
+ "km"=>"KHMER",
39
+ "da"=>"DANISH",
40
+ "sr"=>"SERBIAN",
41
+ "hu"=>"HUNGARIAN",
42
+ "mn"=>"MONGOLIAN",
43
+ "gl"=>"GALICIAN",
44
+ "kn"=>"KANNADA",
45
+ "el"=>"GREEK",
46
+ "ko"=>"KOREAN",
47
+ "sa"=>"SANSKRIT",
48
+ "zh-CN"=>"CHINESE_SIMPLIFIED",
49
+ "gn"=>"GUARANI",
50
+ "dv"=>"DHIVEHI",
51
+ "or"=>"ORIYA",
52
+ "tl"=>"TAGALOG",
53
+ "chr"=>"CHEROKEE",
54
+ "en"=>"ENGLISH",
55
+ "hy"=>"ARMENIAN",
56
+ "mr"=>"MARATHI",
57
+ "sv"=>"SWEDISH",
58
+ "ms"=>"MALAY",
59
+ "am"=>"AMHARIC",
60
+ "eo"=>"ESPERANTO",
61
+ "sd"=>"SINDHI",
62
+ "pl"=>"POLISH",
63
+ "de"=>"GERMAN",
64
+ "be"=>"BELARUSIAN",
65
+ "nl"=>"DUTCH",
66
+ "mt"=>"MALTESE",
67
+ "sw"=>"SWAHILI",
68
+ "ka"=>"GEORGIAN",
69
+ "is"=>"ICELANDIC",
70
+ "ro"=>"ROMANIAN",
71
+ "ug"=>"UIGHUR",
72
+ "yi"=>"YIDDISH",
73
+ "hi"=>"HINDI",
74
+ "fi"=>"FINNISH",
75
+ "ku"=>"KURDISH",
76
+ "pt-PT"=>"PORTUGUESE",
77
+ "bg"=>"BULGARIAN",
78
+ "uz"=>"UZBEK",
79
+ "ga"=>"IRISH",
80
+ "it"=>"ITALIAN",
81
+ "tr"=>"TURKISH",
82
+ "bh"=>"BIHARI",
83
+ "es"=>"SPANISH",
84
+ "iu"=>"INUKTITUT",
85
+ "si"=>"SINHALESE",
86
+ "no"=>"NORWEGIAN",
87
+ "ca"=>"CATALAN",
88
+ "id"=>"INDONESIAN",
89
+ "ar"=>"ARABIC",
90
+ "cs"=>"CZECH",
91
+ "et"=>"ESTONIAN",
92
+ "gu"=>"GUJARATI"}
93
+
94
+ # judge whether the language is supported by google translate
95
+ def supported?(language)
96
+ if Languages.key?(language) || Languages.value?(language.upcase)
97
+ true
98
+ else
99
+ false
100
+ end
101
+ end
102
+ module_function :supported?
103
+
104
+ # get the abbrev of the language
105
+ def abbrev(language)
106
+ if supported?(language)
107
+ if Languages.key?(language)
108
+ language
109
+ else
110
+ language.upcase!
111
+ Languages.each do |k,v|
112
+ if v == language
113
+ return k
114
+ end
115
+ end
116
+ end
117
+ else
118
+ nil
119
+ end
120
+ end
121
+ module_function :abbrev
122
+ end
123
+ end
@@ -0,0 +1,130 @@
1
+ # The program is a simple, unofficial, ruby client API
2
+ # for using Google Translate.
3
+ #
4
+ # Author:: Dingding Ye (mailto:yedingding@gmail.com)
5
+ # Copyright:: Copyright (c) 2007 Dingding Ye
6
+ # License:: Distributes under MIT License
7
+
8
+ module Translate
9
+ class UnsupportedLanguagePair < StandardError
10
+ end
11
+
12
+ class RTranslate
13
+ # Google AJAX Language REST Service URL
14
+ GOOGLE_TRANSLATE_URL = "http://ajax.googleapis.com/ajax/services/language/translate"
15
+
16
+ # Default version of Google AJAX Language API
17
+ DEFAULT_VERSION = "1.0"
18
+
19
+ attr_accessor :version, :key
20
+ attr_reader :default_from, :default_to
21
+
22
+ class << self
23
+ def translate(text, from, to)
24
+ RTranslate.new.translate(text, { :from => from, :to => to })
25
+ end
26
+ alias_method :t, :translate
27
+
28
+ def translate_strings(text_array, from, to)
29
+ RTranslate.new.translate_strings(text_array, {:from => from, :to => to})
30
+ end
31
+
32
+ def translate_string_to_languages(text, options)
33
+ RTranslate.new.translate_string_to_languages(text, options)
34
+ end
35
+
36
+ def batch_translate(translate_options)
37
+ RTranslate.new.batch_translate(translate_options)
38
+ end
39
+ end
40
+
41
+ def initialize(version = DEFAULT_VERSION, key = nil, default_from = nil, default_to = nil)
42
+ @version = version
43
+ @key = key
44
+ @default_from = default_from
45
+ @default_to = default_to
46
+
47
+ if @default_from && !(Google::Lanauage.supported?(@default_from))
48
+ raise StandardError, "Unsupported source language '#{@default_from}'"
49
+ end
50
+
51
+ if @default_to && !(Google::Lanauage.supported?(@default_to))
52
+ raise StandardError, "Unsupported destination language '#{@default_to}'"
53
+ end
54
+ end
55
+
56
+ # translate the string from a source language to a target language.
57
+ #
58
+ # Configuration options:
59
+ # * <tt>:from</tt> - The source language
60
+ # * <tt>:to</tt> - The target language
61
+ def translate(text, options = { })
62
+ from = options[:from] || @default_from
63
+ to = options[:to] || @default_to
64
+ if (from.nil? || Google::Language.supported?(from)) && Google::Language.supported?(to)
65
+ from = from ? Google::Language.abbrev(from) : nil
66
+ to = Google::Language.abbrev(to)
67
+ langpair = "#{from}|#{to}"
68
+
69
+ text.mb_chars.scan(/(.{1,500})/).inject("") do |result, st|
70
+ url = "#{GOOGLE_TRANSLATE_URL}?q=#{st}&langpair=#{langpair}&v=#{@version}"
71
+ if @key
72
+ url << "&key=#{@key}"
73
+ end
74
+ result += do_translate(url)
75
+ end
76
+ else
77
+ raise UnsupportedLanguagePair, "Translation from '#{from}' to '#{to}' isn't supported yet!"
78
+ end
79
+ end
80
+
81
+ # translate several strings, all from the same source language to the same target language.
82
+ #
83
+ # Configuration options
84
+ # * <tt>:from</tt> - The source language
85
+ # * <tt>:to</tt> - The target language
86
+ def translate_strings(text_array, options = { })
87
+ text_array.collect do |text|
88
+ self.translate(text, options)
89
+ end
90
+ end
91
+
92
+ # Translate one string into several languages.
93
+ #
94
+ # Configuration options
95
+ # * <tt>:from</tt> - The source language
96
+ # * <tt>:to</tt> - The target language list
97
+ # Example:
98
+ #
99
+ # translate_string_to_languages("China", {:from => "en", :to => ["zh-CN", "zh-TW"]})
100
+ def translate_string_to_languages(text, option)
101
+ option[:to].collect do |to|
102
+ self.translate(text, { :from => option[:from], :to => to })
103
+ end
104
+ end
105
+
106
+ # Translate several strings, each into a different language.
107
+ #
108
+ # Examples:
109
+ #
110
+ # batch_translate([["China", {:from => "en", :to => "zh-CN"}], ["Chinese", {:from => "en", :to => "zh-CN"}]])
111
+ def batch_translate(translate_options)
112
+ translate_options.collect do |text, option|
113
+ self.translate(text, option)
114
+ end
115
+ end
116
+
117
+ private
118
+ def do_translate(url) #:nodoc:
119
+ jsondoc = open(URI.escape(url)).read
120
+ response = JSON.parse(jsondoc)
121
+ if response["responseStatus"] == 200
122
+ response["responseData"]["translatedText"]
123
+ else
124
+ raise StandardError, response["responseDetails"]
125
+ end
126
+ rescue Exception => e
127
+ raise StandardError, e.message
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,43 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{rtranslate}
3
+ s.version = "1.3"
4
+
5
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
+ s.authors = ["Ye Dingding"]
7
+ s.date = %q{2009-07-11}
8
+ s.description = %q{rtranslate is a simple, unofficial, ruby client API for using Google Translate.}
9
+ s.email = %q{yedingding@gmail.com}
10
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
11
+ s.files = ["History.txt", "MIT-LICENSE", "Manifest.txt", "README.txt", "Rakefile", "rtranslate.gemspec", "bin/rtranslate",
12
+ "lib/rtranslate.rb", "lib/rtranslate/language.rb", "lib/rtranslate/rtranslate.rb", "tests/ts_translate.rb",
13
+ "bin/rtranslate", "lib/rtranslate.rb", "lib/rtranslate/language.rb",
14
+ "lib/rtranslate/rtranslate.rb", "lib/rtranslate/detection.rb", "tests/ts_detection.rb"]
15
+ s.has_rdoc = true
16
+ s.homepage = %q{http://github.com/sishen}
17
+ s.rdoc_options = ["--main", "README.txt"]
18
+ s.require_paths = ["lib"]
19
+ s.rubygems_version = %q{1.2.0}
20
+ s.summary = %q{a simple, unofficial, ruby client API for using Google Translate}
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 2
25
+
26
+ if current_version >= 3 then
27
+ s.add_development_dependency(%q<hoe>, [">= 1.7.0"])
28
+ s.add_development_dependency(%q<rspec>, [">= 1.1.4"])
29
+ s.add_development_dependency(%q<json>, [">= 1.1.3"])
30
+ s.add_development_dependency(%q<activesupprt>, [">= 2.2.0"])
31
+ else
32
+ s.add_dependency(%q<hoe>, [">= 1.7.0"])
33
+ s.add_dependency(%q<rspec>, [">= 1.1.4"])
34
+ s.add_dependency(%q<json>, [">= 1.1.3"])
35
+ s.add_dependency(%q<activesupport>, [">= 2.2.0"])
36
+ end
37
+ else
38
+ s.add_dependency(%q<hoe>, [">= 1.7.0"])
39
+ s.add_dependency(%q<rspec>, [">= 1.1.4"])
40
+ s.add_dependency(%q<json>, [">= 1.1.3"])
41
+ s.add_dependency(%q<activesupport>, [">= 2.2.0"])
42
+ end
43
+ end
@@ -0,0 +1,31 @@
1
+ # -*- coding: utf-8 -*-
2
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../lib")
3
+
4
+ require 'test/unit'
5
+ require 'rtranslate'
6
+
7
+ class Translate::DetectionTest < Test::Unit::TestCase
8
+ include Google::Language
9
+ def test_detection
10
+ d = Detection.new
11
+ assert_equal "es", d.detect("para poner este importante proyecto en práctica")
12
+ assert_equal "en", d.detect("this is a test of the Emergency text categorizing system.")
13
+ assert_equal "fr", d.detect("serait désigné peu après PDG d'Antenne 2 et de FR 3. Pas même lui ! Le")
14
+ assert_equal "it", d.detect("studio dell'uomo interiore? La scienza del cuore umano, che")
15
+ assert_equal "ro", d.detect("taiate pe din doua, in care vezi stralucind brun sau violet cristalele interioare")
16
+ assert_equal "pl", d.detect("na porozumieniu, na ³±czeniu si³ i ¶rodków. Dlatego szukam ludzi, którzy")
17
+ assert_equal "de", d.detect("sagt Hühsam das war bei Über eine Annonce in einem Frankfurter der Töpfer ein. Anhand von gefundenen gut kennt, hatte ihm die wahren Tats
18
+ achen Sechzehn Adorno-Schüler erinnern und daß ein Weiterdenken der Theorie für ihre Festlegung sind drei Jahre Erschütterung Einblick in die Abhängigkeit der Bauarbeiten
19
+ sei")
20
+ assert_equal "fi", d.detect("koulun arkistoihin pölyttymään, vaan nuoret saavat itse vaikuttaa ajatustensa eteenpäinviemiseen esimerkiksi")
21
+ assert_equal "sv", d.detect("enligt all sannolikhet för att få ro oavsiktligt intagit en för")
22
+ assert_equal "hu", d.detect("esôzéseket egy kissé túlméretezte, ebbôl kifolyólag a Földet egy hatalmas árvíz mosta el")
23
+ assert_equal "fi", d.detect("koulun arkistoihin pölyttymään, vaan nuoret saavat itse vaikuttaa ajatustensa eteenpäinviemiseen esimerkiksi")
24
+ assert_equal "nl", d.detect("tegen de kabinetsplannen. Een speciaal in het leven geroepen Landelijk")
25
+ assert_equal "da", d.detect("viksomhed, 58 pct. har et arbejde eller er under uddannelse, 76 pct. forsørges ikke længere af Kolding")
26
+ assert_equal "cs", d.detect("datují rokem 1862. Naprosto zakázán byl v pocitech smutku, beznadìje èi jiné")
27
+ assert_equal "no", d.detect("hånd på den enda hvitere restaurant-duken med en bevegelse så forfinet")
28
+ assert_equal "pt", d.detect("popular. Segundo o seu biógrafo, a Maria Adelaide auxiliava muita gente")
29
+ assert_equal "en", d.detect("TaffyDB finders looking nice so far!")
30
+ end
31
+ end
@@ -0,0 +1,58 @@
1
+ # -*- coding: utf-8 -*-
2
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../lib")
3
+
4
+ require 'test/unit'
5
+ require 'rtranslate'
6
+
7
+ class Translate::TranslateTest < Test::Unit::TestCase
8
+ include Google::Language
9
+ def test_english_translate
10
+ assert_equal("مرحبا العالم", Translate.t("Hello world", "ENGLISH", "ARABIC"));
11
+ assert_equal("世界您好", Translate.t("Hello world", "ENGLISH", "CHINESE_SIMPLIFIED"));
12
+ assert_equal("Bonjour tout le monde", Translate.t("Hello world", "ENGLISH", "FRENCH"));
13
+ assert_equal("Hallo Welt", Translate.t("Hello world", "ENGLISH", "GERMAN"));
14
+ assert_equal("Ciao a tutti", Translate.t("Hello world", "ENGLISH", "ITALIAN"));
15
+ assert_equal("こんにちは、世界", Translate.t("Hello world", "ENGLISH", "JAPANESE"));
16
+ assert_equal("안녕하세요 세상", Translate.t("Hello world", "ENGLISH", "KOREAN"));
17
+ assert_equal("Olá mundo", Translate.t("Hello world", "ENGLISH", "PORTUGUESE"));
18
+ assert_equal("Привет мир", Translate.t("Hello world", "ENGLISH", "RUSSIAN"));
19
+ assert_equal("¡Hola, mundo", Translate.t("Hello world", "ENGLISH", "SPANISH"));
20
+ end
21
+
22
+ def test_auto_detect_translate
23
+ assert_equal("مرحبا العالم", Translate.t("Hello world", nil, "ARABIC"));
24
+ assert_equal("世界您好", Translate.t("Hello world", nil, "CHINESE_SIMPLIFIED"));
25
+ assert_equal("Bonjour tout le monde", Translate.t("Hello world", nil, "FRENCH"));
26
+ assert_equal("Hallo Welt", Translate.t("Hello world", nil, "GERMAN"));
27
+ assert_equal("Ciao a tutti", Translate.t("Hello world", nil, "ITALIAN"));
28
+ assert_equal("こんにちは、世界", Translate.t("Hello world", nil, "JAPANESE"));
29
+ assert_equal("안녕하세요 세상", Translate.t("Hello world", nil, "KOREAN"));
30
+ assert_equal("Olá mundo", Translate.t("Hello world", nil, "PORTUGUESE"));
31
+ assert_equal("Привет мир", Translate.t("Hello world", nil, "RUSSIAN"));
32
+ assert_equal("¡Hola, mundo", Translate.t("Hello world", nil, "SPANISH"));
33
+ end
34
+
35
+ def test_chinese_translate
36
+ assert_equal("Hello World", Translate.t("你好世界", "CHINESE", "ENGLISH"))
37
+ assert_equal("Hello World", Translate.t("你好世界", 'zh', 'en'))
38
+ end
39
+
40
+ def test_unsupported_translate
41
+ assert_raise UnsupportedLanguagePair do
42
+ Translate::RTranslate.t("你好世界", 'zh', 'hz')
43
+ end
44
+ end
45
+
46
+ def test_translate_strings
47
+ assert_equal(["喂", "世界"], Translate::RTranslate.translate_strings(["Hello", "World"], "en", "zh-CN"))
48
+ end
49
+
50
+ def test_translate_string_to_languages
51
+ assert_equal(["世界您好", "ハローワールド"], Translate::RTranslate.translate_string_to_languages("Hello World", {:from => "en", :to => ["zh-CN", "ja"]}))
52
+ end
53
+
54
+ def test_batch_translate
55
+ assert_equal(["世界您好", "ハローワールド"],
56
+ Translate::RTranslate.batch_translate([["Hello World", {:from => "en", :to => "zh-CN"}], ["Hello World", {:from => "en", :to => "ja"}]]))
57
+ end
58
+ end
metadata ADDED
@@ -0,0 +1,113 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: opengotham-rtranslate
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 3
8
+ - 0
9
+ version: 1.3.0
10
+ platform: ruby
11
+ authors:
12
+ - opengotham
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-05-19 00:00:00 -04:00
18
+ default_executable: rtranslate
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: json
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 1
30
+ - 3
31
+ version: 1.1.3
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: shoulda
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :development
45
+ version_requirements: *id002
46
+ - !ruby/object:Gem::Dependency
47
+ name: mocha
48
+ prerelease: false
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ segments:
54
+ - 0
55
+ version: "0"
56
+ type: :development
57
+ version_requirements: *id003
58
+ description: A simple, unofficial, ruby client API for using Google Translate.
59
+ email: mjording@openogotham.com
60
+ executables:
61
+ - rtranslate
62
+ extensions: []
63
+
64
+ extra_rdoc_files:
65
+ - README.txt
66
+ files:
67
+ - .gitignore
68
+ - History.txt
69
+ - MIT-LICENSE
70
+ - Manifest.txt
71
+ - README.txt
72
+ - Rakefile
73
+ - VERSION
74
+ - bin/rtranslate
75
+ - lib/rtranslate.rb
76
+ - lib/rtranslate/detection.rb
77
+ - lib/rtranslate/language.rb
78
+ - lib/rtranslate/rtranslate.rb
79
+ - rtranslate.gemspec
80
+ - tests/ts_detection.rb
81
+ - tests/ts_translate.rb
82
+ has_rdoc: true
83
+ homepage: http://github.com/opengotham/rtranslate
84
+ licenses: []
85
+
86
+ post_install_message:
87
+ rdoc_options:
88
+ - --charset=UTF-8
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ segments:
96
+ - 0
97
+ version: "0"
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ requirements: []
106
+
107
+ rubyforge_project:
108
+ rubygems_version: 1.3.6
109
+ signing_key:
110
+ specification_version: 3
111
+ summary: Google translate ruby client api
112
+ test_files: []
113
+