free_google_translate 0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9086ca66ba31763fd8e2dbf1897b059dccf19c3f
4
+ data.tar.gz: 801f799f1a5fd5cc981aa20761ac3dff9a19c95d
5
+ SHA512:
6
+ metadata.gz: 888b5bb864206a3c80835f95fb342ebafca35f74beb5ab9cec4670d9156a83dec4bd33d7b2524d5026bd819ca1fb63ca9ba5a0f0060e7707236ec6fa3e1efbec
7
+ data.tar.gz: ee23402eb073636fe428184e4717a14c15df8e4a13cfc74eba837ffc82fcef0e7104c73605d3dc76ec353fa3179e94477a0f7069742ebe9851e09306ff1c8a4c
@@ -0,0 +1,68 @@
1
+ require "net/http"
2
+ require "google_translate_error"
3
+ require "json"
4
+ require "languages"
5
+
6
+ class GoogleTranslate
7
+ include Languages
8
+
9
+ attr_reader :from, :to, :text, :uri, :translated
10
+
11
+ GOOGLE_TRANSLATE_URI = "https://translate.googleapis.com/translate_a/single".freeze
12
+
13
+ def initialize params
14
+ @from = get_source_language params
15
+ @to = get_target_language params
16
+ @text = get_text params
17
+ @uri = URI GOOGLE_TRANSLATE_URI
18
+ end
19
+
20
+ def translate
21
+ if @translated
22
+ return @translated
23
+ else
24
+ res = make_request build_query(dt: "t")
25
+ @translated = JSON.parse(res.body).flatten[0]
26
+ end
27
+ end
28
+
29
+ private
30
+ def get_source_language params
31
+ params[:from] || "auto"
32
+ end
33
+
34
+ def get_target_language params
35
+ stripped_target_language = params[:to].to_s.strip
36
+ if full_language_name stripped_target_language
37
+ stripped_target_language
38
+ else
39
+ raise GoogleTranslateError, "Target language is invalid"
40
+ end
41
+ end
42
+
43
+ def get_text params
44
+ stripped_text = params[:text].to_s.strip
45
+ if stripped_text.empty?
46
+ raise GoogleTranslateError, "Text can not empty"
47
+ else
48
+ stripped_text
49
+ end
50
+ end
51
+
52
+ def build_query dt: "t"
53
+ {
54
+ client: "gtx",
55
+ sl: @from,
56
+ tl: @to,
57
+ dt: dt,
58
+ q: @text,
59
+ le: "UTF-8",
60
+ oe: "UTF-8"
61
+ }
62
+ end
63
+
64
+ def make_request query
65
+ uri.query = URI.encode_www_form query
66
+ res = Net::HTTP.get_response uri
67
+ end
68
+ end
@@ -0,0 +1,2 @@
1
+ class GoogleTranslateError < StandardError
2
+ end
@@ -0,0 +1,113 @@
1
+ module Languages
2
+ LANGS = {
3
+ "auto" => "Automatic",
4
+ "af" => "Afrikaans",
5
+ "sq" => "Albanian",
6
+ "am" => "Amharic",
7
+ "ar" => "Arabic",
8
+ "hy" => "Armenian",
9
+ "az" => "Azerbaijani",
10
+ "eu" => "Basque",
11
+ "be" => "Belarusian",
12
+ "bn" => "Bengali",
13
+ "bs" => "Bosnian",
14
+ "bg" => "Bulgarian",
15
+ "ca" => "Catalan",
16
+ "ceb" => "Cebuano",
17
+ "ny" => "Chichewa",
18
+ "zh-cn" => "Chinese Simplified",
19
+ "zh-tw" => "Chinese Traditional",
20
+ "co" => "Corsican",
21
+ "hr" => "Croatian",
22
+ "cs" => "Czech",
23
+ "da" => "Danish",
24
+ "nl" => "Dutch",
25
+ "en" => "English",
26
+ "eo" => "Esperanto",
27
+ "et" => "Estonian",
28
+ "tl" => "Filipino",
29
+ "fi" => "Finnish",
30
+ "fr" => "French",
31
+ "fy" => "Frisian",
32
+ "gl" => "Galician",
33
+ "ka" => "Georgian",
34
+ "de" => "German",
35
+ "el" => "Greek",
36
+ "gu" => "Gujarati",
37
+ "ht" => "Haitian Creole",
38
+ "ha" => "Hausa",
39
+ "haw" => "Hawaiian",
40
+ "iw" => "Hebrew",
41
+ "hi" => "Hindi",
42
+ "hmn" => "Hmong",
43
+ "hu" => "Hungarian",
44
+ "is" => "Icelandic",
45
+ "ig" => "Igbo",
46
+ "id" => "Indonesian",
47
+ "ga" => "Irish",
48
+ "it" => "Italian",
49
+ "ja" => "Japanese",
50
+ "jw" => "Javanese",
51
+ "kn" => "Kannada",
52
+ "kk" => "Kazakh",
53
+ "km" => "Khmer",
54
+ "ko" => "Korean",
55
+ "ku" => "Kurdish (Kurmanji)",
56
+ "ky" => "Kyrgyz",
57
+ "lo" => "Lao",
58
+ "la" => "Latin",
59
+ "lv" => "Latvian",
60
+ "lt" => "Lithuanian",
61
+ "lb" => "Luxembourgish",
62
+ "mk" => "Macedonian",
63
+ "mg" => "Malagasy",
64
+ "ms" => "Malay",
65
+ "ml" => "Malayalam",
66
+ "mt" => "Maltese",
67
+ "mi" => "Maori",
68
+ "mr" => "Marathi",
69
+ "mn" => "Mongolian",
70
+ "my" => "Myanmar (Burmese)",
71
+ "ne" => "Nepali",
72
+ "no" => "Norwegian",
73
+ "ps" => "Pashto",
74
+ "fa" => "Persian",
75
+ "pl" => "Polish",
76
+ "pt" => "Portuguese",
77
+ "ma" => "Punjabi",
78
+ "ro" => "Romanian",
79
+ "ru" => "Russian",
80
+ "sm" => "Samoan",
81
+ "gd" => "Scots Gaelic",
82
+ "sr" => "Serbian",
83
+ "st" => "Sesotho",
84
+ "sn" => "Shona",
85
+ "sd" => "Sindhi",
86
+ "si" => "Sinhala",
87
+ "sk" => "Slovak",
88
+ "sl" => "Slovenian",
89
+ "so" => "Somali",
90
+ "es" => "Spanish",
91
+ "su" => "Sundanese",
92
+ "sw" => "Swahili",
93
+ "sv" => "Swedish",
94
+ "tg" => "Tajik",
95
+ "ta" => "Tamil",
96
+ "te" => "Telugu",
97
+ "th" => "Thai",
98
+ "tr" => "Turkish",
99
+ "uk" => "Ukrainian",
100
+ "ur" => "Urdu",
101
+ "uz" => "Uzbek",
102
+ "vi" => "Vietnamese",
103
+ "cy" => "Welsh",
104
+ "xh" => "Xhosa",
105
+ "yi" => "Yiddish",
106
+ "yo" => "Yoruba",
107
+ "zu" => "Zulu"
108
+ }
109
+
110
+ def full_language_name short_language_name
111
+ LANGS[short_language_name]
112
+ end
113
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: free_google_translate
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Hieu Nguyen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-07-27 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Free Google translate without authentication
14
+ email: nhieu92@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/google_translate.rb
20
+ - lib/google_translate_error.rb
21
+ - lib/languages.rb
22
+ homepage:
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.6.12
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Free Google translate
46
+ test_files: []