v_trans 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0bb1777aaa577981d9b64c16c29e5f00aee5ac80
4
+ data.tar.gz: 86d4ae6bffc4ee5d9e0d45153e68f61d03b2ef2c
5
+ SHA512:
6
+ metadata.gz: 6d717e9419e8ce828516606cb388dc6ad14797983cd34d50ad90dce4314dee6f47a92c2858ae5203d00c98bb4b67668c7e21d5bf649ac87f8454b9decf326853
7
+ data.tar.gz: e2d67d28ccca21cf68266303277529521239253ad71ba589e895e34f7fa211961e9141399c16dbfd67c68b3a1686aa3b01893e02e4278b7e620399bd8b2c51f1
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in v_trans.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Vinh Nguyen Le
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # VTrans
2
+
3
+ Translate the text from one language to another language.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'v_trans'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install v_trans
20
+
21
+ ## Usage
22
+
23
+ Please read the links:
24
+ - [Create the Google Translate API Key](http://support.smartling.com/hc/en-us/articles/203237753-How-can-I-create-a-Google-Translate-API-Key-)
25
+ - [Languages Code](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
26
+
27
+ ```ruby
28
+ $ require 'v_trans'
29
+ $ VTrans("Hello everyone!", "en", "es", "AIzaSyCmt2Xnjn5In0RLu1MzF_KSOHlhlHUG9Vo")
30
+ # "hola a todos!"
31
+ ```
32
+
33
+ ## Contributing
34
+
35
+ 1. Fork it ( https://github.com/[vinhnguyenleasnet/v_trans/fork )
36
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
37
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
38
+ 4. Push to the branch (`git push origin my-new-feature`)
39
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
7
+ task :test => :spec
@@ -0,0 +1,49 @@
1
+ require "uri"
2
+ require "rest_client"
3
+
4
+ module VTrans
5
+ class TranslateApi
6
+ GOOGLE_TRANSLATE_SERVICE_URL = "https://www.googleapis.com/language/translate/v2"
7
+
8
+ def initialize text, from_lang, to_lang, api_key
9
+ @from_lang = from_lang
10
+ @to_lang = to_lang
11
+ @text = text
12
+ @api_key = api_key
13
+ end
14
+
15
+ def translate
16
+ raise("Missing 'from' language") unless @from_lang
17
+ raise("Missing 'to' language") unless @to_lang
18
+ raise("Missing 'text' for translation") unless @text
19
+ raise("Missing 'api key' for the serice") unless @api_key
20
+
21
+ translated = trans_service @text, @from_lang, @to_lang, @api_key
22
+
23
+ if translated
24
+ body = JSON.parse(translated)["data"]["translations"].pop
25
+ result = body["translatedText"]
26
+ else
27
+ raise("The server have problem. Please try again!")
28
+ end
29
+
30
+ return result
31
+ end
32
+
33
+ private
34
+
35
+ def trans_service text, from_lang, to_lang, api_key
36
+ full_url = URI.encode(GOOGLE_TRANSLATE_SERVICE_URL + "?key=#{api_key}&source=#{from_lang}&target=#{to_lang}&q=#{text}")
37
+
38
+ RestClient.get(full_url){ |response|
39
+ if response.code == 200
40
+ res = response.body
41
+ return res
42
+ else
43
+ nil
44
+ end
45
+ }
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,3 @@
1
+ module VTrans
2
+ VERSION = "0.0.1"
3
+ end
data/lib/v_trans.rb ADDED
@@ -0,0 +1,8 @@
1
+ require "v_trans/version"
2
+ require "v_trans/v_trans_api"
3
+
4
+ module VTrans
5
+ def self.translate text, from_lang, to_lang, api_key
6
+ TranslateApi.new(text, from_lang, to_lang, api_key).translate
7
+ end
8
+ end
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+
3
+ describe VTrans do
4
+ it "should raise an error if one of parameters is missing." do
5
+ expect { VTrans.translate("hello", nil, "vi", "AIzaSyCmt2Xnjn5In0RLu1MzF_KSOHlhlHUG9Vo") }.to raise_error
6
+ expect { VTrans.translate("hello", "en", nil, "AIzaSyCmt2Xnjn5In0RLu1MzF_KSOHlhlHUG9Vo") }.to raise_error
7
+ expect { VTrans.translate(nil, "en", "vi", "AIzaSyCmt2Xnjn5In0RLu1MzF_KSOHlhlHUG9Vo") }.to raise_error
8
+ expect { VTrans.translate("hello", "en", "vi", nil) }.to raise_error
9
+ end
10
+
11
+ it "should raise an error if the language code is wrong" do
12
+ expect { VTrans.translate("hello", "en", "vn", "AIzaSyCmt2Xnjn5In0RLu1MzF_KSOHlhlHUG9Vo") }.to raise_error
13
+ end
14
+
15
+ it "should translate the text from one language to another language." do
16
+ translated_text = VTrans.translate("hello everyone", "en", "vi", "AIzaSyCmt2Xnjn5In0RLu1MzF_KSOHlhlHUG9Vo")
17
+ expect(translated_text).to eq("xin chào tất cả mọi người")
18
+ end
19
+ end
@@ -0,0 +1 @@
1
+ require "v_trans"
data/v_trans.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'v_trans/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "v_trans"
8
+ spec.version = VTrans::VERSION
9
+ spec.authors = ["Vinh Nguyen Le"]
10
+ spec.email = ["vinh.nguyenlexuan@asnet.com.vn"]
11
+ spec.summary = %q{A simple gem help you translate the text.}
12
+ spec.description = %q{Using Google Translate API to translate any the text.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec", "~> 3.2.0"
24
+
25
+ spec.add_runtime_dependency "rest-client", "~> 1.7.3"
26
+ end
metadata ADDED
@@ -0,0 +1,113 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: v_trans
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Vinh Nguyen Le
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 3.2.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 3.2.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rest-client
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.7.3
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 1.7.3
69
+ description: Using Google Translate API to translate any the text.
70
+ email:
71
+ - vinh.nguyenlexuan@asnet.com.vn
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - Gemfile
78
+ - LICENSE.txt
79
+ - README.md
80
+ - Rakefile
81
+ - lib/v_trans.rb
82
+ - lib/v_trans/v_trans_api.rb
83
+ - lib/v_trans/version.rb
84
+ - spec/lib/v_trans_spec.rb
85
+ - spec/spec_helper.rb
86
+ - v_trans.gemspec
87
+ homepage: ''
88
+ licenses:
89
+ - MIT
90
+ metadata: {}
91
+ post_install_message:
92
+ rdoc_options: []
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ requirements: []
106
+ rubyforge_project:
107
+ rubygems_version: 2.4.2
108
+ signing_key:
109
+ specification_version: 4
110
+ summary: A simple gem help you translate the text.
111
+ test_files:
112
+ - spec/lib/v_trans_spec.rb
113
+ - spec/spec_helper.rb