yandex_translator 0.1.6 → 0.1.7
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/README.md +50 -50
- data/lib/yandex_translator/version.rb +3 -3
- data/lib/yandex_translator.rb +106 -87
- data/yandex_translator.gemspec +1 -2
- metadata +3 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e414a4a08e40266e244f96d278d83b0871ab7f25
|
4
|
+
data.tar.gz: dbd4accc67d90d6f7cebd1acc9f8d00b0085bce9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97e6465ddabeb5865383eea62eb840d9098b20d4d4f24f86096e31e169120e2fdb86e27ccf32cafa3d1bcca473df1aaacc00d92e2d34331aaab06e43bcfeb3f5
|
7
|
+
data.tar.gz: 94744c6cb5d494af41ec5e19e481eed443caa3e9f5c195df2ba43a67d8f56d62ffd19d866368dc714945d96b1607666c380af6e467091a8b3eace1f0b2da0b41
|
data/README.md
CHANGED
@@ -1,50 +1,50 @@
|
|
1
|
-
# YandexTranslator::Translator
|
2
|
-
|
3
|
-
A library for translating text using Yandex Translate API version 1.5
|
4
|
-
|
5
|
-
## Installation
|
6
|
-
|
7
|
-
Add this line to your application's Gemfile:
|
8
|
-
|
9
|
-
```ruby
|
10
|
-
gem 'yandex_translator'
|
11
|
-
```
|
12
|
-
|
13
|
-
And then execute:
|
14
|
-
|
15
|
-
$ bundle
|
16
|
-
|
17
|
-
Or install it yourself as:
|
18
|
-
|
19
|
-
$ gem install yandex_translator
|
20
|
-
|
21
|
-
## Usage
|
22
|
-
|
23
|
-
1. Create translator object using your API key. You can obtain a key [here](https://tech.yandex.ru/keys/get/?service=trnsl).
|
24
|
-
|
25
|
-
```ruby
|
26
|
-
translator = YandexTranslator::Translator.new(key)
|
27
|
-
```
|
28
|
-
|
29
|
-
2. To get the list of available translation directions and transcriptions of languages abbreviations use method **lang_list**:
|
30
|
-
|
31
|
-
```ruby
|
32
|
-
translator.lang_list(text, hint=nil)
|
33
|
-
```
|
34
|
-
|
35
|
-
3. To get possible text languages use method **lang_detect**:
|
36
|
-
|
37
|
-
```ruby
|
38
|
-
translator.lang_detect(text, hint=nil)
|
39
|
-
```
|
40
|
-
|
41
|
-
4. To translate text use method **translate**:
|
42
|
-
|
43
|
-
```ruby
|
44
|
-
translator.translate(text, lang, format:
|
45
|
-
```
|
46
|
-
|
47
|
-
## License
|
48
|
-
|
49
|
-
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
50
|
-
|
1
|
+
# YandexTranslator::Translator
|
2
|
+
|
3
|
+
A library for translating text using Yandex Translate API version 1.5
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'yandex_translator'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install yandex_translator
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
1. Create translator object using your API key. You can obtain a key [here](https://tech.yandex.ru/keys/get/?service=trnsl).
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
translator = YandexTranslator::Translator.new(key)
|
27
|
+
```
|
28
|
+
|
29
|
+
2. To get the list of available translation directions and transcriptions of languages abbreviations use method **lang_list**:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
translator.lang_list(text, hint=nil)
|
33
|
+
```
|
34
|
+
|
35
|
+
3. To get possible text languages use method **lang_detect**:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
translator.lang_detect(text, hint=nil)
|
39
|
+
```
|
40
|
+
|
41
|
+
4. To translate text use method **translate**:
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
translator.translate(text, lang, format:nil, options:nil)
|
45
|
+
```
|
46
|
+
|
47
|
+
## License
|
48
|
+
|
49
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
50
|
+
|
@@ -1,3 +1,3 @@
|
|
1
|
-
module YandexTranslator
|
2
|
-
VERSION = "0.1.
|
3
|
-
end
|
1
|
+
module YandexTranslator
|
2
|
+
VERSION = "0.1.7"
|
3
|
+
end
|
data/lib/yandex_translator.rb
CHANGED
@@ -1,88 +1,107 @@
|
|
1
|
-
require "yandex_translator/version"
|
2
|
-
|
3
|
-
# A library for translating text using Yandex Translate API version 1.5
|
4
|
-
#
|
5
|
-
module YandexTranslator
|
6
|
-
require '
|
7
|
-
require '
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
class
|
13
|
-
class
|
14
|
-
class
|
15
|
-
class
|
16
|
-
class
|
17
|
-
|
18
|
-
|
19
|
-
#
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
#
|
26
|
-
|
27
|
-
|
28
|
-
@
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
#
|
33
|
-
# * "
|
34
|
-
#
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
#
|
41
|
-
#
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
#
|
48
|
-
# _lang_ argument can be 2 types:
|
49
|
-
# * The pair of the languages "from-to" ('en-ru')
|
50
|
-
# * One destination language ('en')
|
51
|
-
# _format_ argument defaults to *plain*. Can be "plain" for plain text or "html" for HTMl marked text
|
52
|
-
# _options_ argument defaults to *0*. Can be "1" to include to the response the autodetected language of the source text. You can obtain it by attribute *detected*
|
53
|
-
def translate(text, lang, format: :plain, options: 0)
|
54
|
-
requester(:translate, {:
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
when :
|
61
|
-
when :
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
res['
|
85
|
-
|
86
|
-
|
87
|
-
|
1
|
+
require "yandex_translator/version"
|
2
|
+
|
3
|
+
# A library for translating text using Yandex Translate API version 1.5
|
4
|
+
#
|
5
|
+
module YandexTranslator
|
6
|
+
require 'json'
|
7
|
+
require 'http'
|
8
|
+
|
9
|
+
class YandexError < StandardError; end
|
10
|
+
|
11
|
+
class WrongAPIKeyError < YandexError; end
|
12
|
+
class BlockedAPIKeyError < YandexError; end
|
13
|
+
class DaylyLimitExceededError < YandexError; end
|
14
|
+
class MaximumTextSizeExceededError < YandexError; end
|
15
|
+
class TextCannotBeTranslatedError < YandexError; end
|
16
|
+
class SelectedTranslationDirectionNotSupportedError < YandexError; end
|
17
|
+
|
18
|
+
# A Translator class
|
19
|
+
#
|
20
|
+
class Translator
|
21
|
+
attr_accessor :key, :detected
|
22
|
+
URL_BASE = 'https://translate.yandex.net/api/v1.5/tr.json/'
|
23
|
+
|
24
|
+
# Returns the Translator object
|
25
|
+
#
|
26
|
+
def initialize(key)
|
27
|
+
@key = key
|
28
|
+
@detected = nil
|
29
|
+
end
|
30
|
+
|
31
|
+
# Returns the hash with keys:
|
32
|
+
# * "dirs" with values of available translation pairs
|
33
|
+
# * "langs" with keys languages abbreviations transcriptions(if the _lang_ argument is set)
|
34
|
+
#
|
35
|
+
def lang_list(lang = nil)
|
36
|
+
requester(:lang_list, { key: @key, ui: lang }, nil)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Returns possible text languages
|
40
|
+
# The _hint_ argument defaults to *nil*, should be a string of prefered languages, separator ","
|
41
|
+
#
|
42
|
+
def lang_detect(text, hint = nil)
|
43
|
+
requester(:lang_detect, { key: @key, hint: hint }, text)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Return the translation of the _text_ argument
|
47
|
+
# _text_ argument can be a string or an array of strings.
|
48
|
+
# _lang_ argument can be 2 types:
|
49
|
+
# * The pair of the languages "from-to" ('en-ru')
|
50
|
+
# * One destination language ('en')
|
51
|
+
# _format_ argument defaults to *plain*. Can be "plain" for plain text or "html" for HTMl marked text
|
52
|
+
# _options_ argument defaults to *0*. Can be "1" to include to the response the autodetected language of the source text. You can obtain it by attribute *detected*
|
53
|
+
def translate(text, lang, format: :plain, options: 0)
|
54
|
+
requester(:translate, { key: @key, lang: lang, format: format, options: options },text)
|
55
|
+
end
|
56
|
+
|
57
|
+
def requester(method, params, body)
|
58
|
+
url_method = case method
|
59
|
+
when :lang_list then 'getLangs?'
|
60
|
+
when :lang_detect then 'detect?'
|
61
|
+
when :translate then 'translate?'
|
62
|
+
end
|
63
|
+
temp = ''
|
64
|
+
if body
|
65
|
+
if body.class == Array
|
66
|
+
body.each do |v|
|
67
|
+
temp += ('text=' + URI::encode(v.to_s) + '&')
|
68
|
+
end
|
69
|
+
body = temp[0..-2]
|
70
|
+
else
|
71
|
+
body = 'text=' + URI::encode(body.to_s)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
res = HTTP.headers("content-type" => "application/x-www-form-urlencoded").post(URL_BASE + url_method, params: params, body: body)
|
76
|
+
res = JSON.parse(res)
|
77
|
+
|
78
|
+
if res['code'] and res['code'] != 200
|
79
|
+
case res['code']
|
80
|
+
when 401 then raise(WrongAPIKeyError, res['message'])
|
81
|
+
when 402 then raise(BlockedAPIKeyError, res['message'])
|
82
|
+
when 404 then raise(DaylyLimitExceededError, res['message'])
|
83
|
+
when 413 then raise(MaximumTextSizeExceededError, res['message'])
|
84
|
+
when 422 then raise(TextCannotBeTranslatedError, res['message'])
|
85
|
+
when 501 then raise(SelectedTranslationDirectionNotSupportedError, res['message'])
|
86
|
+
else raise(YandexError , res['message'])
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
case method
|
91
|
+
when :lang_list then res
|
92
|
+
when :lang_detect then res['lang']
|
93
|
+
when :translate then
|
94
|
+
if params[:options] == 1
|
95
|
+
@detected = res['detected']['lang']
|
96
|
+
else
|
97
|
+
@detected = nil
|
98
|
+
end
|
99
|
+
if res['text'].size > 1
|
100
|
+
res['text']
|
101
|
+
else
|
102
|
+
res['text'][0]
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
88
107
|
end
|
data/yandex_translator.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.author = "Kozlov_Evgeny"
|
10
10
|
spec.email = ["eeeeevgen@gmail.com"]
|
11
11
|
spec.homepage = 'https://github.com/Eeeeevgen/yandex_translator'
|
12
|
-
spec.date = '2017-
|
12
|
+
spec.date = '2017-07-26'
|
13
13
|
spec.summary = "A library for translating text using Yandex Translate API"
|
14
14
|
|
15
15
|
spec.license = "MIT"
|
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
|
|
21
21
|
|
22
22
|
spec.required_ruby_version = "~> 2.0"
|
23
23
|
spec.add_dependency "http", "~> 2.2"
|
24
|
-
spec.add_dependency "yard", "~> 0.9.9"
|
25
24
|
spec.add_development_dependency "bundler", "~> 1.14"
|
26
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
27
26
|
spec.add_development_dependency "rspec", "~> 3.6"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yandex_translator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kozlov_Evgeny
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.2'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: yard
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.9.9
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.9.9
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: bundler
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
117
|
version: '0'
|
132
118
|
requirements: []
|
133
119
|
rubyforge_project:
|
134
|
-
rubygems_version: 2.6.
|
120
|
+
rubygems_version: 2.6.8
|
135
121
|
signing_key:
|
136
122
|
specification_version: 4
|
137
123
|
summary: A library for translating text using Yandex Translate API
|