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 +18 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +304 -0
- data/Rakefile +9 -0
- data/dakwak-api.gemspec +28 -0
- data/lib/dakwak-api/version.rb +5 -0
- data/lib/dakwak-api.rb +54 -0
- data/test/test_wrapper.rb +28 -0
- metadata +161 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
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
data/dakwak-api.gemspec
ADDED
@@ -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
|
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
|