dakwak-api 1.0.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.
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in dakwak-api.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 nour
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,304 @@
1
+ # Dakwak::Api
2
+
3
+ API wrapper in Ruby for dakwak API
4
+
5
+ ### dakwak
6
+ dakwak is a website localization service that offers both machine and professional translation in 54 different languages.
7
+ You can quickly and easily translate your websites to your languages of choice, and have your translated websites up and running in no time.
8
+
9
+ Start your 14 day trial at dakwak now: https://dakwak.com
10
+
11
+ ## Installation
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ gem 'dakwak-api'
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install dakwak-api
24
+
25
+ ## Usage
26
+ To start, create a wrapper and pass in your website's API key:
27
+
28
+ ```ruby
29
+ wrapper = Dakwak::Api::Wrapper.new(APIKEY)
30
+ ```
31
+
32
+ If you don't know your website's API key:
33
+ - Login to [dakwak](https://dakwak.com)
34
+ - Go to Dashboard -> My Website Content -> Settings
35
+ - Click on blue the button "Request API Key"
36
+
37
+ An email will be sent to the support staff at dakwak and they will contact you with your website’s API Key.
38
+
39
+
40
+ Next, you can use any of these methods on your wrapper object
41
+ ### get_translation
42
+ ```ruby
43
+ wrapper.get_translation(phrase, lang)
44
+ ```
45
+
46
+ Returns the translation of a given phrase in the given language:
47
+
48
+ - It returns the published translation of a given term
49
+ - If no published translation was found, it returns the unpublished translation with the highest level
50
+ - If no unpublished translation was found, return an empty string
51
+ Example
52
+
53
+ ```ruby
54
+ wrapper.get_translation("hola", "ar")
55
+ ```
56
+
57
+ This says: get me the translation of hola in Arabic, and it will return a hash of the following:
58
+
59
+ ```ruby
60
+ {"apikey"=>"1234567890abcdef", "lang"=>"ar", "phrase"=>"hola", "translation"=>"مرحبا"}
61
+ ```
62
+
63
+ Note: If the phrase has not been translated before, you will get an error. In that case, you can use the translate() method to translate that phrase.
64
+
65
+ ### translate
66
+ ```ruby
67
+ wrapper.translate(phrase, lang, callback_url="")
68
+ ```
69
+
70
+ Returns the translation of given phrases in the given language. If no translation was available for a certain phrase, it will do the following:
71
+ - If you provided a callback URL, it will translate the phrase & send the translation in a POST request to the callback URL
72
+ - If no callback URL was provided, it will still translate the phrase, but you have to send a request again to get the translation
73
+
74
+ Example
75
+
76
+ ```ruby
77
+ wrapper.translate(["hello", "welcome"], "ar")
78
+ ```
79
+
80
+ This says: get me the translation of 'hello' and 'welcome' in Arabic, and it will return a hash of the following:
81
+ ````ruby
82
+ {"apikey"=>"1234567890abcdef", "lang"=>"ar", "translation"=>{"hello"=>"مرحبا", "welcome"=>"ترحيب"}}
83
+ ````
84
+
85
+ ### search
86
+ ```ruby
87
+ wrapper.search(phrase, lang)
88
+ ```
89
+
90
+ Returns the phrases that match your query in the translated and the original versions of your website, along with the pages where these phrases were found.
91
+
92
+ Example
93
+
94
+ ```ruby
95
+ wrapper.search("hola", "es")
96
+ ```
97
+
98
+ This says: search through my Spanish website and original website for 'hola', and return URLs of pages where this phrase was found.
99
+
100
+ ```ruby
101
+ {"apikey"=>"1234567890abcdef", "lang"=>"ar", "phrase"=>"welcome", "results"=>[
102
+ {"source_text": "hello world","translated_text": "hola mundo","page_urls": ["/page1", "/page2"]},
103
+ {"source_text": "hi","translated_text": "hola","page_urls": ["/page3", "/page4"]
104
+ }]
105
+ ```
106
+
107
+ ### index_pages
108
+ ```ruby
109
+ wrapper.index_pages(pages)
110
+ ```
111
+
112
+ This method basically indexes the pages you request. By indexing, we mean send a GET request to that page & therefor translating it.
113
+
114
+ Example
115
+
116
+ ```ruby
117
+ wrapper.index_pages(["/page1", "/page2"])
118
+ ```
119
+
120
+ Note: Indexing will happen as a background job, so it will not show any error messages if the indexing fails (returns 404, etc)
121
+
122
+
123
+ ### Notes:
124
+ - These methods assumes you have translated your website to the language of the phrase and the language requested. Otherwise you will get an error.
125
+ - the "lang" field of these methods accepts the shortcut version of the language, which are:
126
+
127
+ ## Valid values for 'lang' field
128
+ <table border="1">
129
+ <thead>
130
+ <tr>
131
+ <td width="140">Language</td>
132
+ <td width="90">Shortcut</td>
133
+ <td width="140">Language</td>
134
+ <td width="90">Shortcut</td>
135
+ <td width="140">Language</td>
136
+ <td width="89">Shortcut</td>
137
+ </tr>
138
+ </thead>
139
+ <tbody>
140
+ <tr>
141
+ <td width="140">Afrikaans</td>
142
+ <td width="90">af</td>
143
+ <td width="140">Greek</td>
144
+ <td width="90">el</td>
145
+ <td width="140">Romanian</td>
146
+ <td width="89">ro</td>
147
+ </tr>
148
+ <tr>
149
+ <td width="140">Albanian</td>
150
+ <td width="90">sq</td>
151
+ <td width="140">Hebrew</td>
152
+ <td width="90">iw</td>
153
+ <td width="140">Russian</td>
154
+ <td width="89">ru</td>
155
+ </tr>
156
+ <tr>
157
+ <td width="140">Arabic</td>
158
+ <td width="90">ar</td>
159
+ <td width="140">Hindi</td>
160
+ <td width="90">hi</td>
161
+ <td width="140">Serbian</td>
162
+ <td width="89">sr</td>
163
+ </tr>
164
+ <tr>
165
+ <td width="140">Belarusian</td>
166
+ <td width="90">be</td>
167
+ <td width="140">Hungarian</td>
168
+ <td width="90">hu</td>
169
+ <td width="140">Slovak</td>
170
+ <td width="89">sk</td>
171
+ </tr>
172
+ <tr>
173
+ <td width="140">Bulgarian</td>
174
+ <td width="90">bg</td>
175
+ <td width="140">Icelandic</td>
176
+ <td width="90">is</td>
177
+ <td width="140">Slovenian</td>
178
+ <td width="89">sl</td>
179
+ </tr>
180
+ <tr>
181
+ <td width="140">Catalan</td>
182
+ <td width="90">ca</td>
183
+ <td width="140">Indonesian</td>
184
+ <td width="90">id</td>
185
+ <td width="140">Spanish</td>
186
+ <td width="89">es</td>
187
+ </tr>
188
+ <tr>
189
+ <td width="140">Chinese (Simplified)</td>
190
+ <td width="90">zh-CN</td>
191
+ <td width="140">Irish</td>
192
+ <td width="90">ga</td>
193
+ <td width="140">Swahili</td>
194
+ <td width="89">sw</td>
195
+ </tr>
196
+ <tr>
197
+ <td width="140">Croatian</td>
198
+ <td width="90">hr</td>
199
+ <td width="140">Italian</td>
200
+ <td width="90">it</td>
201
+ <td width="140">Swedish</td>
202
+ <td width="89">sv</td>
203
+ </tr>
204
+ <tr>
205
+ <td width="140">Czech</td>
206
+ <td width="90">cs</td>
207
+ <td width="140">Japanese</td>
208
+ <td width="90">ja</td>
209
+ <td width="140">Thai</td>
210
+ <td width="89">th</td>
211
+ </tr>
212
+ <tr>
213
+ <td width="140">Danish</td>
214
+ <td width="90">da</td>
215
+ <td width="140">Korean</td>
216
+ <td width="90">ko</td>
217
+ <td width="140">Turkish</td>
218
+ <td width="89">tr</td>
219
+ </tr>
220
+ <tr>
221
+ <td width="140">Dutch</td>
222
+ <td width="90">nl</td>
223
+ <td width="140">Latvian</td>
224
+ <td width="90">lv</td>
225
+ <td width="140">Ukrainian</td>
226
+ <td width="89">uk</td>
227
+ </tr>
228
+ <tr>
229
+ <td width="140">English</td>
230
+ <td width="90">en</td>
231
+ <td width="140">Lithuanian</td>
232
+ <td width="90">lt</td>
233
+ <td width="140">Vietnamese</td>
234
+ <td width="89">vi</td>
235
+ </tr>
236
+ <tr>
237
+ <td width="140">Estonian</td>
238
+ <td width="90">et</td>
239
+ <td width="140">Macedonian</td>
240
+ <td width="90">mk</td>
241
+ <td width="140">Welsh</td>
242
+ <td width="89">cy</td>
243
+ </tr>
244
+ <tr>
245
+ <td width="140">Filipino</td>
246
+ <td width="90">tl</td>
247
+ <td width="140">Malay</td>
248
+ <td width="90">ms</td>
249
+ <td width="140">Yiddish</td>
250
+ <td width="89">yi</td>
251
+ </tr>
252
+ <tr>
253
+ <td width="140">Finnish</td>
254
+ <td width="90">fi</td>
255
+ <td width="140">Maltese</td>
256
+ <td width="90">mt</td>
257
+ <td width="140">Urdu</td>
258
+ <td width="89">ur</td>
259
+ </tr>
260
+ <tr>
261
+ <td width="140">French</td>
262
+ <td width="90">fr</td>
263
+ <td width="140">Persian</td>
264
+ <td width="90">fa</td>
265
+ <td width="140">Chinese (Traditional)</td>
266
+ <td width="89">zh-TW</td>
267
+ </tr>
268
+ <tr>
269
+ <td width="140">Galician</td>
270
+ <td width="90">gl</td>
271
+ <td width="140">Polish</td>
272
+ <td width="90">pl</td>
273
+ <td width="140">French (Canada)</td>
274
+ <td width="89">fr-CA</td>
275
+ </tr>
276
+ <tr>
277
+ <td width="140">German</td>
278
+ <td width="90">de</td>
279
+ <td width="140">Portuguese (Europe)</td>
280
+ <td width="90">pt-PT</td>
281
+ <td width="140">Spanish (Latin America)</td>
282
+ <td width="89">es-LA</td>
283
+ </tr>
284
+ <tr>
285
+ <td width="140"></td>
286
+ <td width="90"></td>
287
+ <td width="140"></td>
288
+ <td width="90"></td>
289
+ <td width="140">Portuguese (Brazil)</td>
290
+ <td width="89">pt-BR</td>
291
+ </tr>
292
+ </tbody>
293
+ </table>
294
+ ## Error Messages
295
+ Here's a list of error messages & more details about them:
296
+
297
+ - **invalid apikey:** your apikey is invalid, check you've copied and pasted it correctly.
298
+ - **website is locked:** one possible reason for this is that your trial was over and you haven't upgraded yet.
299
+ - **lang is not valid or supported:** the language you requested is not supported by dakwak.com or does not exist. Make sure to choose the correct language shortcut from the table above
300
+ - **lang is not included in your plan:** The language you chose is not included in your plan, please choose another language
301
+ - **phrase was not found:** the phrase was not found in the database, you can request a translation by using the translate() method
302
+
303
+ ## Support
304
+ If you have questions or any inquries, please email info@dakwak.com
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.libs << 'test'
7
+ end
8
+ desc "Run tests"
9
+ task :default => :test
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/dakwak-api/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["dakwak"]
6
+ gem.email = ["nour.h@dakwak.com"]
7
+ gem.description = %q{dakwak is a website localization service that offers both machine and professional translation
8
+ in 54 different languages.You can quickly and easily translate your websites to your languages of choice,
9
+ and have your translated websites up and running in no time.}
10
+ gem.summary = %q{dakwak is a website localization service that offers both machine and professional translation
11
+ in 54 different languages.}
12
+ gem.homepage = "https://dakwak.com"
13
+
14
+ gem.files = `git ls-files`.split($\)
15
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
+ gem.name = "dakwak-api"
18
+ gem.require_paths = ["lib"]
19
+ gem.version = Dakwak::Api::VERSION
20
+
21
+
22
+ gem.add_development_dependency 'rake'
23
+ gem.add_development_dependency 'multi_json'
24
+ gem.add_runtime_dependency 'multi_json'
25
+ gem.add_development_dependency 'httparty'
26
+ gem.add_runtime_dependency 'httparty'
27
+ gem.add_development_dependency 'test-unit'
28
+ end
@@ -0,0 +1,5 @@
1
+ module Dakwak
2
+ module Api
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
data/lib/dakwak-api.rb ADDED
@@ -0,0 +1,54 @@
1
+ require 'httparty'
2
+ require 'multi_json'
3
+ require "dakwak-api/version"
4
+
5
+ module Dakwak
6
+ module Api
7
+ class Wrapper
8
+ include HTTParty
9
+ base_uri 'https://dakwak.com/api'
10
+
11
+ def initialize(apikey)
12
+ raise ArgumentError, "apikey must be a non-empty string" unless is_non_empty_string(apikey)
13
+ @apikey = apikey
14
+ end
15
+
16
+ def search(phrase, lang)
17
+ raise ArgumentError, "phrase must be a non-empty string" unless is_non_empty_string(phrase)
18
+ raise ArgumentError, "lang must be a non-empty string" unless is_non_empty_string(lang)
19
+ url = "/search.json?apikey=#{@apikey}&phrase=#{phrase}&lang=#{lang}"
20
+ return MultiJson.load(self.class.post(url).body)
21
+ end
22
+
23
+ def get_translation(phrase, lang)
24
+ raise ArgumentError, "phrase must be a non-empty string" unless is_non_empty_string(phrase)
25
+ raise ArgumentError, "lang must be a non-empty string" unless is_non_empty_string(lang)
26
+ url = "/get_translation.json?apikey=#{@apikey}&phrase=#{phrase}&lang=#{lang}"
27
+ return MultiJson.load(self.class.post(url).body)
28
+ end
29
+
30
+ def translate(phrases, lang, callback_url="")
31
+ raise ArgumentError, "phrases must be a non-empty array" unless is_non_empty_array(phrases)
32
+ raise ArgumentError, "lang must be a non-empty string" unless is_non_empty_string(lang)
33
+ url = "/translate.json?apikey=#{@apikey}&lang=#{lang}&callback_url=#{callback_url}"
34
+ phrases.each { |phrase| url << "&phrases[]=#{phrase}" }
35
+ return MultiJson.load(self.class.post(url).body)
36
+ end
37
+
38
+ def index_pages(pages)
39
+ raise ArgumentError, "pages must be a non-empty array" unless is_non_empty_array(pages)
40
+ url = "/index_pages.json?apikey=#{@apikey}"
41
+ pages.each { |page| url << "&pages[]=#{page}" }
42
+ return MultiJson.load(self.class.post(url).body)
43
+ end
44
+
45
+ private
46
+ def is_non_empty_string(arg)
47
+ arg.is_a?(String) && !arg.empty?
48
+ end
49
+ def is_non_empty_array(arg)
50
+ arg.is_a?(Array) && !arg.empty?
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,28 @@
1
+ require 'dakwak-api'
2
+ require 'test/unit'
3
+
4
+ class WrapperTest < Test::Unit::TestCase
5
+
6
+ # add your apikey here
7
+ APIKEY = ""
8
+
9
+ def test_must_return_error_when_apikey_is_empty
10
+ wrapper = Dakwak::Api::Wrapper.new("123456-invalid-key")
11
+ assert({"error"=>"invalid apikey"}.eql?(wrapper.get_translation("hola", "ar")))
12
+ end
13
+ def test_must_return_error_when_lang_is_invalid
14
+ wrapper = Dakwak::Api::Wrapper.new(APIKEY)
15
+ assert({"error"=>"lang is not valid or supported"}.eql?(wrapper.get_translation("hola", "xyz")))
16
+ end
17
+ def test_get_translation_must_return_empty_when_phrase_is_not_translated
18
+ wrapper = Dakwak::Api::Wrapper.new(APIKEY)
19
+ #phrases that is unlikely to be translated (is in db, but not translated)
20
+ # assert_equal("", wrapper.get_translation("dinosaurs", "es")["translation"])
21
+ end
22
+ def test_get_translation_must_return_error_when_phrase_does_not_exist
23
+ wrapper = Dakwak::Api::Wrapper.new(APIKEY)
24
+ #phrases that is unlikely to be in the db
25
+ assert({"error"=>"phrase was not found"}.eql?(wrapper.get_translation("shooot", "es")))
26
+ end
27
+
28
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dakwak-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - dakwak
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: multi_json
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: multi_json
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: httparty
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: httparty
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: test-unit
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ description: ! "dakwak is a website localization service that offers both machine
111
+ and professional translation \n in 54 different languages.You can quickly and
112
+ easily translate your websites to your languages of choice, \n and have your
113
+ translated websites up and running in no time."
114
+ email:
115
+ - nour.h@dakwak.com
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - .gitignore
121
+ - Gemfile
122
+ - LICENSE
123
+ - README.md
124
+ - Rakefile
125
+ - dakwak-api.gemspec
126
+ - lib/dakwak-api.rb
127
+ - lib/dakwak-api/version.rb
128
+ - test/test_wrapper.rb
129
+ homepage: https://dakwak.com
130
+ licenses: []
131
+ post_install_message:
132
+ rdoc_options: []
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ segments:
142
+ - 0
143
+ hash: 839664365
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ segments:
151
+ - 0
152
+ hash: 839664365
153
+ requirements: []
154
+ rubyforge_project:
155
+ rubygems_version: 1.8.25
156
+ signing_key:
157
+ specification_version: 3
158
+ summary: dakwak is a website localization service that offers both machine and professional
159
+ translation in 54 different languages.
160
+ test_files:
161
+ - test/test_wrapper.rb