ggtranslate 0.1.0 → 0.2.0
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -10
- data/README.md +9 -2
- data/ggtranslate.gemspec +0 -1
- data/lib/ggtranslate/exceptions.rb +7 -0
- data/lib/ggtranslate/languages.rb +57 -0
- data/lib/ggtranslate/result_object.rb +11 -3
- data/lib/ggtranslate/translator.rb +3 -3
- data/lib/ggtranslate/version.rb +1 -1
- data/lib/ggtranslate.rb +9 -1
- metadata +4 -17
- data/.byebug_history +0 -111
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7841a8a567623e55ce3fa8c63aa310cf9935177938a8f7eb6f3e9494c39271fb
|
4
|
+
data.tar.gz: a99f3ef5bae22626c51948991dbaf280e5ababdf580272a4b96d1dc76e7020f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b3b16b4f83e7c1d9cf92446cf9a548bc8e721796019585f0f48e2f8917b82d635902b6a895fb1cb5bc93d454648991be1a9d8a7de50ea4a3b01d79fde8080236
|
7
|
+
data.tar.gz: 04f263c723b409234a745b941f84dd910b5bd5d6b82405230229af7fed68907e0ce12514269da34e0771ba9dfdab79d16eb90bf67e1f04ba22ad21229eb9bb9e
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ggtranslate (0.1.
|
4
|
+
ggtranslate (0.1.1)
|
5
5
|
addressable
|
6
|
-
byebug (~> 11.1.3)
|
7
|
-
charlock_holmes
|
8
|
-
faraday
|
9
6
|
rest-client (~> 2.1)
|
10
7
|
|
11
8
|
GEM
|
@@ -14,14 +11,9 @@ GEM
|
|
14
11
|
addressable (2.8.0)
|
15
12
|
public_suffix (>= 2.0.2, < 5.0)
|
16
13
|
byebug (11.1.3)
|
17
|
-
charlock_holmes (0.7.7)
|
18
14
|
diff-lcs (1.5.0)
|
19
15
|
domain_name (0.5.20190701)
|
20
16
|
unf (>= 0.0.5, < 1.0.0)
|
21
|
-
faraday (2.1.0)
|
22
|
-
faraday-net_http (~> 2.0)
|
23
|
-
ruby2_keywords (>= 0.0.4)
|
24
|
-
faraday-net_http (2.0.1)
|
25
17
|
http-accept (1.7.0)
|
26
18
|
http-cookie (1.0.4)
|
27
19
|
domain_name (~> 0.5)
|
@@ -49,7 +41,6 @@ GEM
|
|
49
41
|
diff-lcs (>= 1.2.0, < 2.0)
|
50
42
|
rspec-support (~> 3.10.0)
|
51
43
|
rspec-support (3.10.3)
|
52
|
-
ruby2_keywords (0.0.5)
|
53
44
|
unf (0.1.4)
|
54
45
|
unf_ext
|
55
46
|
unf_ext (0.0.8)
|
data/README.md
CHANGED
@@ -24,7 +24,7 @@ Start with translate 1 simple sentence from English to Vietnamese
|
|
24
24
|
|
25
25
|
```ruby
|
26
26
|
require 'ggtranslate'
|
27
|
-
result = Ggtranslate
|
27
|
+
result = Ggtranslate.translate("hello", "en", "vi")
|
28
28
|
result.translated_text
|
29
29
|
# => "xin chào"
|
30
30
|
```
|
@@ -38,7 +38,7 @@ sentences = [
|
|
38
38
|
%q{chào buổi tối},
|
39
39
|
]
|
40
40
|
|
41
|
-
result = Ggtranslate
|
41
|
+
result = Ggtranslate.translate(sentences, "auto", "en")
|
42
42
|
result.translated_text
|
43
43
|
|
44
44
|
# => ["hello everyone", "good morning", "good evening"]
|
@@ -46,6 +46,13 @@ result.translated_text
|
|
46
46
|
|
47
47
|
you can use `auto` to let Google Translate auto detect source / dest language
|
48
48
|
|
49
|
+
To get all supported languages
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
Ggtranslate::LANGUAGES
|
53
|
+
```
|
54
|
+
|
55
|
+
|
49
56
|
|
50
57
|
# 📝 License
|
51
58
|
The gem is available as open source under the terms of the MIT License.
|
data/ggtranslate.gemspec
CHANGED
@@ -39,7 +39,6 @@ Gem::Specification.new do |spec|
|
|
39
39
|
spec.add_development_dependency "rake", "~> 10.0"
|
40
40
|
spec.add_development_dependency "rspec", "~> 3.2"
|
41
41
|
spec.add_development_dependency "byebug", "~> 11.1.3"
|
42
|
-
spec.add_dependency "byebug", "~> 11.1.3"
|
43
42
|
spec.add_dependency "rest-client", "~> 2.1"
|
44
43
|
spec.add_dependency "addressable"
|
45
44
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Ggtranslate
|
2
|
+
LANGUAGES = {
|
3
|
+
"af" => "afrikaans",
|
4
|
+
"sq" => "albanian",
|
5
|
+
"ar" => "arabic",
|
6
|
+
"be" => "belarusian",
|
7
|
+
"bg" => "bulgarian",
|
8
|
+
"ca" => "catalan",
|
9
|
+
"zh-CN" => "chinese_simplified",
|
10
|
+
"zh-TW" => "chinese_traditional",
|
11
|
+
"hr" => "croatian",
|
12
|
+
"cs" => "czech",
|
13
|
+
"da" => "danish",
|
14
|
+
"nl" => "dutch",
|
15
|
+
"en" => "english",
|
16
|
+
"et" => "estonian",
|
17
|
+
"tl" => "filipino",
|
18
|
+
"fi" => "finnish",
|
19
|
+
"fr" => "french",
|
20
|
+
"gl" => "galician",
|
21
|
+
"de" => "german",
|
22
|
+
"el" => "greek",
|
23
|
+
"iw" => "hebrew",
|
24
|
+
"hi" => "hindi",
|
25
|
+
"hu" => "hungarian",
|
26
|
+
"is" => "icelandic",
|
27
|
+
"id" => "indonesian",
|
28
|
+
"ga" => "irish",
|
29
|
+
"it" => "italian",
|
30
|
+
"ja" => "japanese",
|
31
|
+
"ko" => "korean",
|
32
|
+
"la" => "latin",
|
33
|
+
"lv" => "latvian",
|
34
|
+
"lt" => "lithuanian",
|
35
|
+
"mk" => "macedonian",
|
36
|
+
"ms" => "malay",
|
37
|
+
"mt" => "maltese",
|
38
|
+
"no" => "norwegian",
|
39
|
+
"fa" => "persian",
|
40
|
+
"pl" => "polish",
|
41
|
+
"pt" => "portuguese",
|
42
|
+
"ro" => "romanian",
|
43
|
+
"ru" => "russian",
|
44
|
+
"sr" => "serbian",
|
45
|
+
"sk" => "slovak",
|
46
|
+
"sl" => "slovenian",
|
47
|
+
"es" => "spanish",
|
48
|
+
"sw" => "swahili",
|
49
|
+
"sv" => "swedish",
|
50
|
+
"th" => "thai",
|
51
|
+
"tr" => "turkish",
|
52
|
+
"uk" => "ukrainian",
|
53
|
+
"vi" => "vietnamese",
|
54
|
+
"cy" => "welsh",
|
55
|
+
"yi" => "yiddish",
|
56
|
+
}
|
57
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative "./exceptions"
|
2
|
+
|
1
3
|
module Ggtranslate
|
2
4
|
class ResultObject
|
3
5
|
def initialize(http_response)
|
@@ -11,12 +13,14 @@ module Ggtranslate
|
|
11
13
|
result = @response_data.dig("sentences", 0, "trans")
|
12
14
|
elsif @response_data.is_a? Array
|
13
15
|
result = @response_data.first
|
14
|
-
else
|
15
|
-
raise "NO RESUL FOUND"
|
16
16
|
end
|
17
17
|
|
18
|
+
raise "EMPTY RESULT" unless result
|
19
|
+
|
18
20
|
result = result.split("----------")
|
19
21
|
result.count == 1 ? result.first : result
|
22
|
+
rescue => e
|
23
|
+
raise Ggtranslate::ResponseParsingException.new("Fail to parse response body")
|
20
24
|
end
|
21
25
|
|
22
26
|
def source_language
|
@@ -47,7 +51,11 @@ module Ggtranslate
|
|
47
51
|
private
|
48
52
|
|
49
53
|
def process_http_response
|
50
|
-
|
54
|
+
unless is_success?
|
55
|
+
error_message = "Fail to call api with http code #{@http_response.code}"
|
56
|
+
raise Ggtranslate::ApiCallException.new(error_message)
|
57
|
+
end
|
58
|
+
|
51
59
|
@response_data = JSON.load(@http_response.body)
|
52
60
|
end
|
53
61
|
end
|
@@ -4,8 +4,8 @@ require "addressable"
|
|
4
4
|
require_relative "./result_object"
|
5
5
|
|
6
6
|
module Ggtranslate
|
7
|
-
|
8
|
-
def
|
7
|
+
module Translator
|
8
|
+
def translate(text_query, source_language = "auto", to_language = "en")
|
9
9
|
endpoint = "https://clients5.google.com/translate_a/t?"
|
10
10
|
# to translate multiple sentences
|
11
11
|
text_query = text_query.join("----------") if text_query.is_a? Array
|
@@ -23,7 +23,7 @@ module Ggtranslate
|
|
23
23
|
ResultObject.new(response)
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def build_headers
|
27
27
|
{
|
28
28
|
|
29
29
|
accept: "*/*",
|
data/lib/ggtranslate/version.rb
CHANGED
data/lib/ggtranslate.rb
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
require "ggtranslate/version"
|
2
2
|
require_relative "ggtranslate/translator"
|
3
3
|
require_relative "ggtranslate/result_object"
|
4
|
+
require_relative "ggtranslate/languages"
|
4
5
|
|
5
6
|
module Ggtranslate
|
6
|
-
|
7
|
+
autoload :ApiCallException, "ggtranslate/exceptions"
|
8
|
+
autoload :ResponseParsingException, "ggtranslate/exceptions"
|
9
|
+
autoload :LANGUAGES, "ggtranslate/languages"
|
10
|
+
|
11
|
+
extend Translator
|
12
|
+
|
13
|
+
class << self
|
14
|
+
end
|
7
15
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ggtranslate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thien Tran
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 11.1.3
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: byebug
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 11.1.3
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 11.1.3
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: rest-client
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,7 +101,6 @@ executables: []
|
|
115
101
|
extensions: []
|
116
102
|
extra_rdoc_files: []
|
117
103
|
files:
|
118
|
-
- ".byebug_history"
|
119
104
|
- ".gitignore"
|
120
105
|
- ".ruby-version"
|
121
106
|
- CODE_OF_CONDUCT.md
|
@@ -128,6 +113,8 @@ files:
|
|
128
113
|
- bin/setup
|
129
114
|
- ggtranslate.gemspec
|
130
115
|
- lib/ggtranslate.rb
|
116
|
+
- lib/ggtranslate/exceptions.rb
|
117
|
+
- lib/ggtranslate/languages.rb
|
131
118
|
- lib/ggtranslate/result_object.rb
|
132
119
|
- lib/ggtranslate/translator.rb
|
133
120
|
- lib/ggtranslate/version.rb
|
data/.byebug_history
DELETED
@@ -1,111 +0,0 @@
|
|
1
|
-
c
|
2
|
-
result.translated_text
|
3
|
-
c
|
4
|
-
build_headers
|
5
|
-
RestClient.get("https://clients5.google.com/translate_a/t?client=dict-chrome-ex&sl=auto&tl=en&q=xin%20ch%C3%A0o%20m%E1%BB%8Di%20ng%C6%B0%E1%BB%9Di", headers = build_headers)
|
6
|
-
RestClient.get(endpoint + uri.query, headers = build_headers)
|
7
|
-
endpoint + uri.query
|
8
|
-
response
|
9
|
-
c
|
10
|
-
result.class
|
11
|
-
result.translated_text
|
12
|
-
result
|
13
|
-
result.to_json
|
14
|
-
c
|
15
|
-
response = RestClient.get(endpoint + uri.query, headers = build_headers)
|
16
|
-
response = RestClient.get(endpoint + uri.query_values, headers = build_headers)
|
17
|
-
c
|
18
|
-
require 'charlock_holmes/string'
|
19
|
-
CharlockHolmes::EncodingDetector.detect("'«''ịeth World Cup 2011, Nhat Bản Ä'ang Ä'ứng tha»© 13 FIFA - 19 matches»›i Việt Nam ")
|
20
|
-
result.translated_text
|
21
|
-
c
|
22
|
-
CharlockHolmes::EncodingDetector.detect(@http_response.body)
|
23
|
-
require 'charlock_holmes'
|
24
|
-
c
|
25
|
-
CharDet.detect(@http_response.body)
|
26
|
-
require "rchardet"
|
27
|
-
CharDet.detect(@http_response.body)
|
28
|
-
c
|
29
|
-
@http_response.body.force_encoding("Windows-1252")
|
30
|
-
@http_response.body.force_encoding("UTF-8")
|
31
|
-
@http_response.body.force_encoding("Windows-1252")
|
32
|
-
@http_response.body.force_encoding("Windows-1252").encode("UTF-8")
|
33
|
-
c
|
34
|
-
@http_response.body.encode("UTF-8", "Windows-1252")
|
35
|
-
c
|
36
|
-
@http_response.body
|
37
|
-
@http_response.body.encode("UTF-8", "Windows-1252")
|
38
|
-
@http_response.body.encode("ISO-8859-1")
|
39
|
-
Encoding::toUTF8()
|
40
|
-
@http_response.body.encoding
|
41
|
-
@http_response.body
|
42
|
-
@http_response.response
|
43
|
-
@http_response
|
44
|
-
result.translated_text
|
45
|
-
"mỗi ngày tôi chọn 1 niềm vui"
|
46
|
-
"mỗi"
|
47
|
-
c
|
48
|
-
result.translated_text
|
49
|
-
result
|
50
|
-
c
|
51
|
-
@response_data = JSON.load(@http_response.body)
|
52
|
-
c
|
53
|
-
rr
|
54
|
-
rr.encoding
|
55
|
-
@http_response.methods
|
56
|
-
@http_response.uri
|
57
|
-
@http_response.url
|
58
|
-
@http_response.response
|
59
|
-
@http_response.class
|
60
|
-
@http_response
|
61
|
-
rr.encoding.force_encode("UTF-8")
|
62
|
-
rr.encoding.force_encoding("UTF-8")
|
63
|
-
rr.encoding
|
64
|
-
rr = @response_data.dig("sentences", 0, "trans")
|
65
|
-
@response_data.dig("sentences", 0, "trans")
|
66
|
-
@http_response.headers
|
67
|
-
@http_response
|
68
|
-
@response_data = JSON.load(@http_response.body)
|
69
|
-
c
|
70
|
-
@http_response.uri
|
71
|
-
@http_response.response
|
72
|
-
@http_response.read_header
|
73
|
-
@http_response.inspect
|
74
|
-
@http_response.class
|
75
|
-
@http_response.body
|
76
|
-
@http_response.class
|
77
|
-
@http_response.header
|
78
|
-
@http_response.headers
|
79
|
-
@http_response.header
|
80
|
-
@http_response.header.as_json
|
81
|
-
@http_response.header.to_json
|
82
|
-
@http_response.header.to_s
|
83
|
-
@http_response.header
|
84
|
-
@http_response.head
|
85
|
-
@http_response.body.force_encoding("UTF-8").encode("UTF-8")
|
86
|
-
@http_response.body.force_encoding("UTF-8")
|
87
|
-
c
|
88
|
-
result
|
89
|
-
c
|
90
|
-
result
|
91
|
-
c
|
92
|
-
result
|
93
|
-
c
|
94
|
-
@http_response.body.force_encoding("UTF-8")
|
95
|
-
@http_response.body.force_encoding("UTF-8").encode("UTF-8")
|
96
|
-
@http_response.body.force_encoding("ISO-8859-1").encode("UTF-8")
|
97
|
-
@http_response.body.encode("UTF-8")
|
98
|
-
@http_response.body.encoding.encode("UTF-8")
|
99
|
-
@http_response.body.encoding
|
100
|
-
c
|
101
|
-
result.translated_text.force_encoding("utf-8")
|
102
|
-
result.translated_text.encode("iso-8859-1").force_encoding("utf-8")
|
103
|
-
result.translated_text.class
|
104
|
-
result.translated_text.to_utf8
|
105
|
-
result.translated_text.encoding
|
106
|
-
result.translated_text
|
107
|
-
c
|
108
|
-
result.translated_text
|
109
|
-
result
|
110
|
-
results
|
111
|
-
c
|