dakwak-api 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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