string_language 0.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.
- checksums.yaml +7 -0
- data/lib/google_translator.rb +107 -0
- data/lib/string_language.rb +22 -0
- metadata +74 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d17acb6f2c8786819fd554341735aea3f4105181
|
4
|
+
data.tar.gz: ab0844adc17ede08a03adc57947e8d2dbff8957d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 85f9592e85ddf547daec1511dfef505cfa1a8f74fa0cfb20271b232fa6667b94bbc6401c7779aa222a8f3f0279d84e1ce2e7d6e5cc8188182fce8d5c6f253bcb
|
7
|
+
data.tar.gz: fd68023e7cef2b1091767022006f79b2a672fe8205c81cd946f7c2a5620354649f5d4fee3ec30d938ac5658df30ace2d67fddb9390d8ef1413e2578aa4095cf4
|
@@ -0,0 +1,107 @@
|
|
1
|
+
# @author Aad Schippers <aad@solidam.com>
|
2
|
+
|
3
|
+
require 'curb'
|
4
|
+
require 'open-uri'
|
5
|
+
|
6
|
+
class GoogleTranslator
|
7
|
+
|
8
|
+
EMPTY_GOOGLE_STRING = "[ [[\"#{__FILE__} error: empty or erroneous response from Google Translate\"]], [] ]"
|
9
|
+
|
10
|
+
attr_accessor :input, :input_language, :output_language, :google_array, :google_string
|
11
|
+
attr_accessor :output, :locale
|
12
|
+
|
13
|
+
def initalize
|
14
|
+
self.locale = 'nl'
|
15
|
+
end
|
16
|
+
|
17
|
+
def translate input, input_language='auto', output_language=locale
|
18
|
+
|
19
|
+
self.input = input
|
20
|
+
self.input_language = input_language
|
21
|
+
self.output_language = output_language
|
22
|
+
|
23
|
+
ask_google
|
24
|
+
|
25
|
+
# return the untranslated input when it is translated to white space only
|
26
|
+
self.output = translation.match( /^\s*$/ ) ? input : translation
|
27
|
+
end
|
28
|
+
|
29
|
+
def language input
|
30
|
+
|
31
|
+
self.input = input
|
32
|
+
self.input_language = 'auto'
|
33
|
+
self.output_language = locale
|
34
|
+
|
35
|
+
ask_google
|
36
|
+
|
37
|
+
google_array[-2].flatten[0]
|
38
|
+
end
|
39
|
+
|
40
|
+
def translation
|
41
|
+
|
42
|
+
# Google Translate does not always respect surrounding space and quotes. This gem does.
|
43
|
+
prefix + translated_middle + suffix
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def prefix
|
49
|
+
|
50
|
+
input.match( /^(\s*['"]\s*|\s*)/ )[0]
|
51
|
+
end
|
52
|
+
|
53
|
+
def suffix
|
54
|
+
|
55
|
+
input.match( /(\s*['"]\s*|\s*)$/ )[0]
|
56
|
+
end
|
57
|
+
|
58
|
+
def middle
|
59
|
+
|
60
|
+
start = prefix.length
|
61
|
+
finish = input.length - suffix.length
|
62
|
+
input[start,finish]
|
63
|
+
end
|
64
|
+
|
65
|
+
def translated_middle
|
66
|
+
|
67
|
+
google_array[0][0][0].gsub( /^\s*/, '' ).gsub( /\s*$/, '' )
|
68
|
+
end
|
69
|
+
|
70
|
+
def ask_google
|
71
|
+
|
72
|
+
query_google
|
73
|
+
|
74
|
+
# Google translate returns a javascript array, which may contain empty
|
75
|
+
# items, i.e. array = [1,,2] is correct javascript
|
76
|
+
# fill empty places of array [1,, ,4, , ] => "[23,-1,-1,4,-1,-1]"
|
77
|
+
array_string = google_string.gsub( /,\s*,/, ',-1,' ).gsub( /,\s*,/, ',-1,' ).gsub( /\[\s*,/, '[-1,' ).gsub( /,\s*\]/, ',-1]' )
|
78
|
+
|
79
|
+
self.google_array = eval( array_string )
|
80
|
+
end
|
81
|
+
|
82
|
+
def url
|
83
|
+
"http://translate.google.nl/translate_a/t"
|
84
|
+
end
|
85
|
+
|
86
|
+
def uri_encoded
|
87
|
+
|
88
|
+
URI::encode( input )
|
89
|
+
end
|
90
|
+
|
91
|
+
def query
|
92
|
+
"?client=t&sl=#{input_language}&tl=#{output_language}&hl=en&sc=2&ie=UTF-8&oe=UTF-8&prev=btn&ssel=0&tsel=0&q=#{uri_encoded}"
|
93
|
+
end
|
94
|
+
|
95
|
+
def query_google
|
96
|
+
|
97
|
+
self.google_string = Curl.get( url + query ).body_str || EMPTY_GOOGLE_STRING
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
# Quick Testing
|
102
|
+
=begin
|
103
|
+
english = "this is english text"
|
104
|
+
translator = GoogleTranslator.new
|
105
|
+
translation = translator.translate english
|
106
|
+
puts translation
|
107
|
+
=end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative 'google_translator'
|
2
|
+
|
3
|
+
class String
|
4
|
+
|
5
|
+
@@translator = GoogleTranslator.new
|
6
|
+
|
7
|
+
def language
|
8
|
+
return @@translator.language self
|
9
|
+
end
|
10
|
+
|
11
|
+
def translate input_language='auto', output_language='nl'
|
12
|
+
self == '' ? '' : @@translator.translate( self, input_language, output_language )
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# Quick Testing
|
17
|
+
=begin
|
18
|
+
puts "language of this string".language
|
19
|
+
puts "dutch: " + "this is a test".translate
|
20
|
+
puts "german: " + "this is a test".translate( 'en', 'de' )
|
21
|
+
puts "french: " + "this is a test".translate( 'en', 'fr' )
|
22
|
+
=end
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: string_language
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Cornelis Adriaan Schippers
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-08-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: curb
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: open-uri
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Translate and establish language of a string
|
42
|
+
email: aad@solidam.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/google_translator.rb
|
48
|
+
- lib/string_language.rb
|
49
|
+
homepage: http://rubygems.org/gems/string_language
|
50
|
+
licenses:
|
51
|
+
- MIT
|
52
|
+
metadata: {}
|
53
|
+
post_install_message:
|
54
|
+
rdoc_options: []
|
55
|
+
require_paths:
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
requirements: []
|
68
|
+
rubyforge_project:
|
69
|
+
rubygems_version: 2.0.7
|
70
|
+
signing_key:
|
71
|
+
specification_version: 4
|
72
|
+
summary: Extends String with methods 'translate' and 'language'
|
73
|
+
test_files: []
|
74
|
+
has_rdoc:
|