tr8n_client_sdk 4.1.6 → 4.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7cb47a8f25f6b27451a1c9e8b45a9d5311f18e79
4
- data.tar.gz: 5f16ff10ab8df805d404234b5f8971a9d8bbdaa4
3
+ metadata.gz: e2c5d0fc6b0b1a8f19a0c1d744e67421eef4c2ba
4
+ data.tar.gz: c30856b2d4f36db9dfafdfa04cc835519858b4fd
5
5
  SHA512:
6
- metadata.gz: 7d002ca916300782dccd51275759dd7a6692f099a295f6f3d03518a7a73eda3ff22c00277f5cfb9f598e3dd3950ecd95b03cafad8ec058e255d851379f107bb2
7
- data.tar.gz: 0a48178707dcd1ab2608deed5b787645f6133c6502dceff671d43f1bcaa67aef1983a2cb2afa929a512019335633650b2d6d650b7f1893818e826594d92dfaec
6
+ metadata.gz: eea75b84daa691897516b52147b90f20df8cb5239d7ef58ebe198d09deb4f8d3669f813740232c8b1ad33784f67764213d9a0d3da566bc2bcfec0349177f8c1d
7
+ data.tar.gz: de278681dbd09b56b8d23f440456996a3c7fb2df4ee776818d1bc70a0587f7d2bdaa9b41edcb4b843749bee5ea3f5cddf6d70611fe2d9efbfb2b07c126c56c94
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Michael Berkovich, tr8nhub.com
1
+ Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -2,84 +2,75 @@
2
2
  <img src="https://raw.github.com/tr8n/tr8n/master/doc/screenshots/tr8nlogo.png">
3
3
  </p>
4
4
 
5
- Tr8n Client SDK for Ruby on Rails
5
+ Tr8n SDK for Ruby on Rails
6
6
  ===================================
7
7
  [![Build Status](https://travis-ci.org/tr8n/tr8n_rails_clientsdk.png?branch=master)](https://travis-ci.org/tr8n/tr8n_rails_clientsdk)
8
8
  [![Coverage Status](https://coveralls.io/repos/tr8n/tr8n_rails_clientsdk/badge.png)](https://coveralls.io/r/tr8n/tr8n_rails_clientsdk)
9
9
  [![Gem Version](https://badge.fury.io/rb/tr8n_client_sdk.png)](http://badge.fury.io/rb/tr8n_client_sdk)
10
10
  [![Dependency Status](https://www.versioneye.com/user/projects/53cda6a5225426f1e8000165/badge.svg?style=flat)](https://www.versioneye.com/user/projects/53cda6a5225426f1e8000165)
11
- [![Project status](http://stillmaintained.com/tr8n/tr8n_ruby_core.png)](http://stillmaintained.com/tr8n/tr8n_ruby_core.png)
12
11
 
13
- This Client SDK provides extensions necessary for translating Rails 3.2.X based application using the TranslationExchange.com service.
12
+ This Client SDK provides tools for translating Rails applications into any language using the TranslationExchange.com service.
14
13
 
15
14
 
16
- Tr8n Client SDK Sample
15
+ Installation
17
16
  ===================================
18
17
 
19
- The best way to start using the SDK is to run a sample application that comes bundled with this SDK.
20
-
21
- ```sh
22
- $ git clone https://github.com/tr8n/tr8n_rails_clientsdk.git
23
- $ cd tr8n_rails_clientsdk/spec/dummy
24
- $ bundle
25
- ```
26
-
27
- Before you running the application, visit TranslationExchange.com, register as a new user and create a new application.
18
+ To integrate Tr8n SDK into your own application, all you need to do is:
28
19
 
29
- Update your key and secret in the following file: config/initializers/tr8n.rb
20
+ Add the following gem to your Gemfile:
30
21
 
31
22
  ```ruby
32
- config.application = {
33
- :key => YOUR_KEY,
34
- :secret => YOUR_SECRET
35
- }
23
+ gem 'tr8n_client_sdk'
36
24
  ```
37
25
 
38
- Now you can start the application by running:
26
+ Install the gems:
39
27
 
40
28
  ```sh
41
- $ bundle exec rails s
29
+ $ bundle
42
30
  ```
43
31
 
44
32
 
45
- This will start the dummy application on port 3000. Open your browser and point to:
46
-
47
- http://localhost:3000
33
+ Configuration
34
+ ===================================
48
35
 
36
+ Create a tr8n initializer file with the following configuration:
49
37
 
38
+ config/initializers/tr8n.rb
50
39
 
40
+ ```ruby
41
+ Tr8n.configure do |config|
42
+ config.application = {
43
+ :key => YOUR_APP_KEY,
44
+ :secret => YOUR_APP_SECRET
45
+ }
46
+ end
47
+ ```
51
48
 
52
- Integration
53
- ===================================
49
+ Tr8n should be run with caching enabled. You can specify the cache you want to use by providing it in the initializer.
54
50
 
55
- To integrate Tr8n SDK into your own app, all you need to do is:
51
+ If you are already using Rails caching, you can use it for Tr8n as well:
56
52
 
57
- Add the following gem to your Gemfile:
53
+ config/environments/production.rb
58
54
 
59
55
  ```ruby
60
- gem 'tr8n_client_sdk', '~> 3.2'
61
- ```
62
-
63
- Install the gems:
56
+ config.cache_store = :mem_cache_store, Dalli::Client.new('localhost:11211', {:namespace => 'myapplication'})
57
+ config.identity_cache_store = :mem_cache_store, Dalli::Client.new('localhost:11211', {:namespace => 'myapplication'})
64
58
 
65
- ```sh
66
- $ bundle
67
59
  ```
68
60
 
69
- Create an initializer file under config/initializers/tr8n.rb and add the following configuration:
61
+ config/initializers/tr8n.rb
70
62
 
71
63
  ```ruby
72
64
  Tr8n.configure do |config|
73
- config.application = {
74
- :key => YOUR_APP_KEY,
75
- :secret => YOUR_APP_SECRET
65
+ config.cache = {
66
+ :enabled => true,
67
+ :adapter => 'rails',
68
+ :version => 1
76
69
  }
77
70
  end
78
71
  ```
79
72
 
80
- Tr8n is best run with caching enabled. You can specify your caching adapter using the following settings:
81
-
82
- Memcache example:
73
+ Alternatively, you can provide a separate memcache server specifically for translations:
83
74
 
84
75
  ```ruby
85
76
  Tr8n.configure do |config|
@@ -93,7 +84,7 @@ Memcache example:
93
84
  end
94
85
  ```
95
86
 
96
- Redis example:
87
+ You can also use Redis to persist your translations cache:
97
88
 
98
89
  ```ruby
99
90
  Tr8n.configure do |config|
@@ -107,8 +98,51 @@ Redis example:
107
98
  end
108
99
  ```
109
100
 
110
- To see a full list of supported cache adapters or to create your own cache adapter, visit TranslationExchange.com/docs
101
+ The above examples use shared caching model - all your Rails processes on all your servers share the same translation cache. This approach
102
+ will save you memory space, as well as allow you to invalidate/redeploy your translations cache without having to redeploy your application.
111
103
 
104
+ To update the cache, run the following line of code from any application instance (for example, an admin tool):
105
+
106
+ ```ruby
107
+ Tr8n.cache.upgrade_version
108
+ ```
109
+
110
+ Or you can run the rake command:
111
+
112
+ ```sh
113
+ $ bundle exec rake tr8n:cache:upgrade
114
+ ```
115
+
116
+ This will effectively invalidate your current cache and rebuilt it with the latest translations from Translation Exchange's CDN.
117
+
118
+ An alternative approach is to pre-generate all your cache files when you deploy your application. The translation cache will be loaded and stored in every process on every server,
119
+ but it will be faster at serving translations and this approach does not require cache warmup.
120
+
121
+ If you prefer to use in-memory caching, you can specify the file based cache using:
122
+
123
+ ```ruby
124
+ Tr8n.configure do |config|
125
+ config.cache = {
126
+ :enabled => true,
127
+ :adapter => 'file',
128
+ :path => 'config/tr8n',
129
+ :version => 'current',
130
+ :segmented => false
131
+ }
132
+ end
133
+ ```
134
+
135
+ If you set ':segmented' to 'true' it will generate cache files per language per source, instead of one file per language for the entire application.
136
+
137
+ The file based cache must be generated before you deploy your application using the following command:
138
+
139
+ ```sh
140
+ $ bundle exec rake tr8n:cache:generate
141
+ ```
142
+
143
+
144
+ Integration
145
+ ===================================
112
146
 
113
147
  In the HEAD section of your layout, add:
114
148
 
@@ -129,7 +163,7 @@ server, but it may not be ideal on production. There are a number of alternative
129
163
 
130
164
  To use a dropdown language selector that uses locale in the url parameter, use:
131
165
 
132
- ```rails
166
+ ```ruby
133
167
  <%= tr8n_language_selector_tag(
134
168
  :type => :dropdown,
135
169
  :style => "margin-top:15px",
@@ -137,16 +171,13 @@ To use a dropdown language selector that uses locale in the url parameter, use:
137
171
  ) %>
138
172
  ```
139
173
 
140
- As you see, you can provide custom values to how you want to make it look and whether you want to use the english version
141
- of the language name or have the language be printed in a native language.
142
-
143
-
144
- Now you can use TML (Translation Markup Language) in your application to translate your strings:
174
+ Now you can use Tr8n's helper methods and TML (Translation Markup Language) to translate your strings:
145
175
 
146
- ```rails
176
+ ```ruby
147
177
  <%= tr("Hello World") %>
148
- <%= tr("You have {count||message}", :count => 5) %>
149
- <%= tr("{actor} sent {target} [bold: {count||gift}]", :actor => actor_user, :target => target_user, :count => 5) %>
178
+ <%= tr("You have {count || message}", count: 5) %>
179
+ <%= tr("{actor} sent {target} [bold: {count || gift}]", actor: actor_user, target: target_user, count: 5) %>
180
+ <%= tr("{actor} uploaded [bold: {count || photo}] to {actor | his, her} photo album.", actor: current_user, count: 5) %>
150
181
  ...
151
182
  ```
152
183
 
@@ -159,29 +190,48 @@ you can simply use:
159
190
 
160
191
  ```
161
192
 
162
-
163
- Learn more about TML at: https://TranslationExchange.com/docs
193
+ Learn more about TML at: http://TranslationExchange.com/docs
164
194
 
165
195
 
166
- Caching
196
+ I18n fallback
167
197
  ===================================
168
198
 
169
- To reset/upgrade your cache, you can simply call
199
+ If your application is already using the standard i18n framework, you can mix in the Tr8n framework on top of it. To do so,
200
+ you need to set the i18n backend to Tr8n. Add the following line to your tr8n initializer:
201
+
202
+ config/initializers/tr8n.rb
170
203
 
171
204
  ```ruby
172
- Tr8n.cache.upgrade_version
205
+ I18n.backend = I18n::Backend::Tr8n.new
173
206
  ```
174
207
 
175
- All the keys stored in memory based cache are versioned. By upgrading the version you will effectively invalidate the old keys and the new keys will be loaded from the translation service.
208
+ Now the "t" function will automatically fallback onto "tr" function. If you have the following in your base language file:
176
209
 
210
+ config/locales/en.yml
177
211
 
178
- File adapters require pre-generation. You can pre-generate your cache by running:
212
+ ```ruby
213
+ en:
214
+ hello: "Hello world"
215
+ my:
216
+ nested:
217
+ key: "This is a nested key"
218
+ ```
179
219
 
180
- ```sh
181
- $ rake tr8n:generate_cache:cdb
220
+ Then you can call:
221
+
222
+ ```ruby
223
+ <%= t(:hello) %>
224
+ <%= t("my.nested.key") %>
182
225
  ```
183
226
 
184
- You can also do a combination of file-based adapters (for persistent cache) and memory-based adapters for serving the translations.
227
+ And the i18n will use Translation Exchange as the backend for your translations. On top of it, you can continue using Tr8n's extensions:
228
+
229
+ ```ruby
230
+ <%= tr("Hello World") %>
231
+ <%= tr("This is a nested key") %>
232
+ ```
233
+
234
+ The above calls are equivalent.
185
235
 
186
236
 
187
237
  Logging
@@ -232,20 +282,52 @@ If you need to adjust those method names, you can set them in the config:
232
282
  ```
233
283
 
234
284
 
285
+ Tr8n Client SDK Sample
286
+ ===================================
287
+
288
+ The best way to start using the SDK is to run a sample application that comes bundled with this SDK.
289
+
290
+ ```sh
291
+ $ git clone https://github.com/tr8n/tr8n_rails_clientsdk.git
292
+ $ cd tr8n_rails_clientsdk/spec/dummy
293
+ $ bundle
294
+ ```
295
+
296
+ Before you running the application, visit TranslationExchange.com, register as a new user and create a new application.
297
+
298
+ Update your key and secret in the following file: config/initializers/tr8n.rb
299
+
300
+ ```ruby
301
+ config.application = {
302
+ :key => YOUR_KEY,
303
+ :secret => YOUR_SECRET
304
+ }
305
+ ```
306
+
307
+ Now you can start the application by running:
308
+
309
+ ```sh
310
+ $ bundle exec rails s
311
+ ```
312
+
313
+
314
+ This will start the dummy application on port 3000. Open your browser and point to:
315
+
316
+ http://localhost:3000
317
+
318
+
235
319
  Links
236
320
  ==================
237
321
 
238
322
  * Register on TranslationExchange.com: https://translationexchange.com
239
323
 
240
- * Read TranslationExchange's documentation: http://wiki.translationexchange.com
241
-
242
- * Visit TranslationExchange's blog: http://blog.translationexchange.com
324
+ * Read TranslationExchange's documentation: https://translationexchange.com/docs
243
325
 
244
326
  * Follow TranslationExchange on Twitter: https://twitter.com/translationx
245
327
 
246
328
  * Connect with TranslationExchange on Facebook: https://www.facebook.com/translationexchange
247
329
 
248
- * If you have any questions or suggestions, contact us: info@translationexchange.com
330
+ * If you have any questions or suggestions, contact us: feedback@translationexchange.com
249
331
 
250
332
 
251
333
  Copyright and license
data/Rakefile CHANGED
@@ -1,3 +1,34 @@
1
+ #--
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
+ #
4
+ # _______ _ _ _ ______ _
5
+ # |__ __| | | | | (_) | ____| | |
6
+ # | |_ __ __ _ _ __ ___| | __ _| |_ _ ___ _ __ | |__ __ _____| |__ __ _ _ __ __ _ ___
7
+ # | | '__/ _` | '_ \/ __| |/ _` | __| |/ _ \| '_ \| __| \ \/ / __| '_ \ / _` | '_ \ / _` |/ _ \
8
+ # | | | | (_| | | | \__ \ | (_| | |_| | (_) | | | | |____ > < (__| | | | (_| | | | | (_| | __/
9
+ # |_|_| \__,_|_| |_|___/_|\__,_|\__|_|\___/|_| |_|______/_/\_\___|_| |_|\__,_|_| |_|\__, |\___|
10
+ # __/ |
11
+ # |___/
12
+ # Permission is hereby granted, free of charge, to any person obtaining
13
+ # a copy of this software and associated documentation files (the
14
+ # "Software"), to deal in the Software without restriction, including
15
+ # without limitation the rights to use, copy, modify, merge, publish,
16
+ # distribute, sublicense, and/or sell copies of the Software, and to
17
+ # permit persons to whom the Software is furnished to do so, subject to
18
+ # the following conditions:
19
+ #
20
+ # The above copyright notice and this permission notice shall be
21
+ # included in all copies or substantial portions of the Software.
22
+ #
23
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
+ #++
31
+
1
32
  #!/usr/bin/env rake
2
33
  #begin
3
34
  # require 'bundler/setup'
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2014 Michael Berkovich, TranslationExchange.com
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
3
  #
4
4
  # _______ _ _ _ ______ _
5
5
  # |__ __| | | | | (_) | ____| | |
@@ -29,19 +29,11 @@
29
29
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
30
  #++
31
31
 
32
- namespace :tr8n_client_sdk do
33
-
34
- task :init => :environment do
35
-
32
+ module Tr8nClientSdk
33
+ class CacheController < ApplicationController
34
+ def upgrade
35
+ Tr8n.cache.upgrade_version
36
+ redirect_to(request.env['HTTP_REFERER'] || '/')
37
+ end
36
38
  end
37
-
38
- task :cache do
39
- require "tr8n_client_sdk/config"
40
- Tr8n.config = Tr8nClientSdk::Config.new
41
-
42
- Tr8n.config.init_application
43
- g = Tr8nCore::Generators::Cache::File.new
44
- g.run
45
- end
46
-
47
39
  end
@@ -31,7 +31,7 @@
31
31
  <% elsif opts[:language] == :english %>
32
32
  <%= lang.english_name %>
33
33
  <% else %>
34
- <%= lang.name %>
34
+ <%= lang.english_name %>
35
35
  <% end %>
36
36
  </option>
37
37
  <% end %>
@@ -47,7 +47,7 @@
47
47
  <% elsif opts[:language] == :english %>
48
48
  <%= tr8n_current_language.english_name %>
49
49
  <% else %>
50
- <%= tr8n_current_language.name %>
50
+ <%= tr8n_current_language.english_name %>
51
51
  <% end %>
52
52
  </a>
53
53
  <% end %>
@@ -1,6 +1,18 @@
1
1
  <div style="padding-top:40px; color: #ccc; text-align:center; width:100%">
2
- <%= tr("Powered by {tr8n}", :tr8n => link_to("Tr8n", "http://wiki.tr8nhub.com", :style=>"color:#ccc;")) %>
3
- <div style="padding-top:5px;">
4
- <%=link_to(image_tag("http://wiki.tr8nhub.com/images/e/e9/Tr8n_logo.png", :style=>"width:50px;"), "http://wiki.tr8nhub.com") %>
2
+ <%= tr("Powered by {trex}", :trex => link_to("TranslationExchange.com", "http://translationexchange.com", :style=>"color:#ccc;")) %>
3
+
4
+ <style>
5
+ .trex_logo {
6
+ margin-top:10px;
7
+ padding: 40px;
8
+ background-repeat: no-repeat;
9
+ background-image:url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAEMAAABQCAYAAABCiMhGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQTg4MTEyOEU0NkIxMUUzODhCMEJEOUNDRDQ0QkU0MiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQTg4MTEyOUU0NkIxMUUzODhCMEJEOUNDRDQ0QkU0MiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJBODgxMTI2RTQ2QjExRTM4OEIwQkQ5Q0NENDRCRTQyIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJBODgxMTI3RTQ2QjExRTM4OEIwQkQ5Q0NENDRCRTQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+mszKSAAAAqFJREFUeNrsnE1IFVEYhr+53QiKEIkgpCBwJSH9SITkqkVELXJZ0iYIqRaBCZWgoWKikRBI1KVNmyg3gVKQ0CZE+9kHQYukaGP2I6iEP1ffc+dc7iwK5s5Mx3PPvC88zGxm5s4zc85853JmvNardwTxwC1wGuyWdGQGvARduaH23wUJkJHFcgoclnTmKzgIIT8yWOlNsQiVPeB+8c74hmWNMNXqzqimh0JqlIxVeigkr2Tk6aGQtQwdlEIZlEEZlEEZEZONuf0YmASLYNNGPRI1e8FFsHUjZNwAg5Zd3GHwHuw02Uw+WShCZRr0m+4zPljc9D+alpG1WMYW0zJsfgplxMGTYp1BGZRBGZRBGZRBGZRBGZRBGZRBGQxlUAZlUAZlUAZlUAZlUAZlUAZlUIbDMmyeYr3KO6OUJdMyGiyWcdS0DPV+ykMLRRwD16JuHGc60gV9Fd6KP/Vxs/hTEDvBbIT9nQLNEdp8XkpTH0/GMRl3bladJpi7EWQcB89dfLSW24EdAeOsM0T2gQkWXX4bf6P7mlTL2KFFbE97Ob4NvAO70j42UcdTbyHU2jo28Qwe7zXYb2nl6mXE3DzwF6DJ5kGrkjFv4EBP4laHBjKjZDz7zwfJgTOWi3iVG2qfVTKui//ZhMTaXmD9Hmi1XMSf4m9UMubAIfAY/Epg58t62QcuWyxhQfx37A7grvgcHKipgdU5UPWX538LuBlh8Deu+4oVS2X8BN8h4p+j1jlNMOW+5lQ8+QmpsIQpusr5vsYV8EUqNElWoKojHpYKTlIyusFtqfAkIWMA9IgDiStD/cXXIY4kjowHoE0cSlQZj8AlcSxRZDwF58XBhJGxFlgfBWfF0YSR4QXK62ZxOGFk1OtR7QlxPGFkjIBGSUHWBRgAlJNpO4bVinwAAAAASUVORK5CYII=);
10
+ }
11
+ </style>
12
+
13
+ <div style="text-align: center">
14
+ <%=link_to('http://translationexchange.com') do %>
15
+ <img class="trex_logo" src="" alt="" />
16
+ <% end %>
5
17
  </div>
6
18
  </div>
@@ -1,90 +1,45 @@
1
1
  <% if Tr8n.config.enabled? %>
2
-
3
2
  <style type="text/css">
4
- .tr8n_fltr {
5
- <%=tr8n_style_attribute_tag('float', 'right')%> !important;
6
- }
7
- .tr8n_fltl {
8
- <%=tr8n_style_attribute_tag('float', 'left')%> !important;
9
- }
10
- .tr8n_txtr {
11
- <%=tr8n_style_attribute_tag('text-align', 'right')%> !important;
12
- }
13
- .tr8n_txtl {
14
- <%=tr8n_style_attribute_tag('text-align', 'left')%> !important;
15
- }
3
+ .tr8n_fltr {<%=tr8n_style_attribute_tag('float', 'right')%> !important;}
4
+ .tr8n_fltl {<%=tr8n_style_attribute_tag('float', 'left')%> !important;}
5
+ .tr8n_txtr {<%=tr8n_style_attribute_tag('text-align', 'right')%> !important;}
6
+ .tr8n_txtl {<%=tr8n_style_attribute_tag('text-align', 'left')%> !important;}
16
7
  </style>
17
8
 
18
9
  <script>
19
- function tr8n_add_css(doc, value, inline) {
20
- var css = null;
21
- if (inline) {
22
- css = doc.createElement('style'); css.type = 'text/css';
23
- if (css.styleSheet) css.styleSheet.cssText = value;
24
- else css.appendChild(document.createTextNode(value));
25
- } else {
26
- css = doc.createElement('link'); css.setAttribute('type', 'text/css');
27
- css.setAttribute('rel', 'stylesheet'); css.setAttribute('media', 'screen');
28
- if (value.indexOf('//') != -1) css.setAttribute('href', value);
29
- else css.setAttribute('href', '<%= tr8n_application.host %>' + value);
30
- }
31
- doc.getElementsByTagName('head')[0].appendChild(css);
32
- return css;
33
- }
10
+ (function() {
11
+ if (window.tr8n_already_initialized) return;
12
+ window.tr8n_already_initialized = true;
34
13
 
35
- function tr8n_add_script(doc, id, src, onload) {
36
- var script = doc.createElement('script');
37
- script.setAttribute('id', id);
14
+ var script = window.document.createElement('script');
15
+ script.setAttribute('id', 'tr8n-tools');
38
16
  script.setAttribute('type', 'application/javascript');
39
- if (src.indexOf('//') != -1) script.setAttribute('src', src);
40
- else script.setAttribute('src', '<%= tr8n_application.host %>' + src);
17
+ script.setAttribute('src', '<%= tr8n_application.tools['javascript'] %>');
41
18
  script.setAttribute('charset', 'UTF-8');
42
- if (onload) script.onload = onload;
43
- doc.getElementsByTagName('head')[0].appendChild(script);
44
- return script;
45
- }
46
-
47
- (function() {
48
- if (window.addEventListener) window.addEventListener('load', tr8n_init, false); // Standard
49
- else if (window.attachEvent) window.attachEvent('onload', tr8n_init); // Microsoft
50
- window.setTimeout(function() { // just in case, hit it one more time a second later
51
- tr8n_init();
52
- }, 1000);
53
-
54
- function tr8n_init() {
55
- if (window.tr8n_already_initialized) return;
56
- window.tr8n_already_initialized = true;
57
-
58
- tr8n_add_css(window.document, '/assets/tr8n/tools.css', false);
59
- tr8n_add_css(window.document, "<%= tr8n_application.css %>", true);
60
-
61
- tr8n_add_script(window.document, 'tr8n-jssdk', '/assets/tools.js?t=<%=Time.now%>', function() {
62
- Tr8n.app_key = '<%= tr8n_application.key %>';
63
- Tr8n.host = '<%= tr8n_application.host %>';
64
- Tr8n.sources = [];
65
- Tr8n.default_locale = '<%= tr8n_application.default_locale %>';
66
- Tr8n.page_locale = '<%= tr8n_current_language.locale %>';
67
- Tr8n.locale = '<%= tr8n_current_language.locale %>';
68
-
69
- <%
70
- if tr8n_application.feature_enabled?(:shortcuts)
71
- tr8n_application.shortcuts.each do |key, script|
72
- %>
73
- shortcut.add('<%=key.html_safe%>', function() {
74
- <%= script.html_safe %>
75
- });
76
- <%
77
- end
78
- end
79
- %>
80
-
81
- if (typeof(tr8n_on_ready) === 'function') {
82
- tr8n_on_ready();
83
- }
19
+ script.onload = function() {
20
+ Tr8n.Utils.insertCSS(window.document, "<%= tr8n_application.tools['stylesheet'] %>", false);
21
+ Tr8n.Utils.insertCSS(window.document, "<%= tr8n_application.css %>", true);
22
+ Tr8n.app_key = '<%= tr8n_application.key %>';
23
+ Tr8n.host = '<%= tr8n_application.tools['host'] %>';
24
+ Tr8n.locale = '<%= tr8n_current_language.locale %>';
25
+ Tr8n.sources = [];
26
+ <%
27
+ if tr8n_application.feature_enabled?(:shortcuts)
28
+ tr8n_application.shortcuts.each do |key, script|
29
+ %>
30
+ shortcut.add('<%=key.html_safe%>', function() {
31
+ <%= script.html_safe %>
84
32
  });
85
- }
33
+ <%
34
+ end
35
+ end
36
+ %>
37
+ if (typeof(tr8n_on_ready) === 'function') {
38
+ tr8n_on_ready();
39
+ }
40
+ };
41
+
42
+ window.document.getElementsByTagName('head')[0].appendChild(script);
86
43
  })();
87
44
  </script>
88
-
89
-
90
45
  <% end %>
data/config/routes.rb CHANGED
@@ -1,2 +1,34 @@
1
- Tr8nClientSdk::Engine.routes.draw do
1
+ #--
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
+ #
4
+ # _______ _ _ _ ______ _
5
+ # |__ __| | | | | (_) | ____| | |
6
+ # | |_ __ __ _ _ __ ___| | __ _| |_ _ ___ _ __ | |__ __ _____| |__ __ _ _ __ __ _ ___
7
+ # | | '__/ _` | '_ \/ __| |/ _` | __| |/ _ \| '_ \| __| \ \/ / __| '_ \ / _` | '_ \ / _` |/ _ \
8
+ # | | | | (_| | | | \__ \ | (_| | |_| | (_) | | | | |____ > < (__| | | | (_| | | | | (_| | __/
9
+ # |_|_| \__,_|_| |_|___/_|\__,_|\__|_|\___/|_| |_|______/_/\_\___|_| |_|\__,_|_| |_|\__, |\___|
10
+ # __/ |
11
+ # |___/
12
+ # Permission is hereby granted, free of charge, to any person obtaining
13
+ # a copy of this software and associated documentation files (the
14
+ # "Software"), to deal in the Software without restriction, including
15
+ # without limitation the rights to use, copy, modify, merge, publish,
16
+ # distribute, sublicense, and/or sell copies of the Software, and to
17
+ # permit persons to whom the Software is furnished to do so, subject to
18
+ # the following conditions:
19
+ #
20
+ # The above copyright notice and this permission notice shall be
21
+ # included in all copies or substantial portions of the Software.
22
+ #
23
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
+ #++
31
+
32
+ Rails.application.routes.draw do
33
+ get '/tr8n/upgrade' => 'tr8n_client_sdk/cache#upgrade'
2
34
  end
@@ -0,0 +1,62 @@
1
+ #--
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
+ #
4
+ # _______ _ _ _ ______ _
5
+ # |__ __| | | | | (_) | ____| | |
6
+ # | |_ __ __ _ _ __ ___| | __ _| |_ _ ___ _ __ | |__ __ _____| |__ __ _ _ __ __ _ ___
7
+ # | | '__/ _` | '_ \/ __| |/ _` | __| |/ _ \| '_ \| __| \ \/ / __| '_ \ / _` | '_ \ / _` |/ _ \
8
+ # | | | | (_| | | | \__ \ | (_| | |_| | (_) | | | | |____ > < (__| | | | (_| | | | | (_| | __/
9
+ # |_|_| \__,_|_| |_|___/_|\__,_|\__|_|\___/|_| |_|______/_/\_\___|_| |_|\__,_|_| |_|\__, |\___|
10
+ # __/ |
11
+ # |___/
12
+ # Permission is hereby granted, free of charge, to any person obtaining
13
+ # a copy of this software and associated documentation files (the
14
+ # "Software"), to deal in the Software without restriction, including
15
+ # without limitation the rights to use, copy, modify, merge, publish,
16
+ # distribute, sublicense, and/or sell copies of the Software, and to
17
+ # permit persons to whom the Software is furnished to do so, subject to
18
+ # the following conditions:
19
+ #
20
+ # The above copyright notice and this permission notice shall be
21
+ # included in all copies or substantial portions of the Software.
22
+ #
23
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
+ #++
31
+
32
+ require 'i18n/backend/base'
33
+ require 'tr8n_core'
34
+
35
+ module I18n
36
+ module Backend
37
+ class Tr8n < I18n::Backend::Simple
38
+
39
+ module Implementation
40
+ include Base, Flatten
41
+
42
+ def application
43
+ ::Tr8n.session.application
44
+ end
45
+
46
+ def available_locales
47
+ application.locales
48
+ end
49
+
50
+ def lookup(locale, key, scope = [], options = {})
51
+ default_key = super(application.default_locale, key, scope, options)
52
+ default_key ||= key
53
+ application.language(locale.to_s).translate(default_key)
54
+ end
55
+
56
+ end
57
+
58
+ include Implementation
59
+ end
60
+ end
61
+ end
62
+
@@ -0,0 +1,60 @@
1
+ #--
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
+ #
4
+ # _______ _ _ _ ______ _
5
+ # |__ __| | | | | (_) | ____| | |
6
+ # | |_ __ __ _ _ __ ___| | __ _| |_ _ ___ _ __ | |__ __ _____| |__ __ _ _ __ __ _ ___
7
+ # | | '__/ _` | '_ \/ __| |/ _` | __| |/ _ \| '_ \| __| \ \/ / __| '_ \ / _` | '_ \ / _` |/ _ \
8
+ # | | | | (_| | | | \__ \ | (_| | |_| | (_) | | | | |____ > < (__| | | | (_| | | | | (_| | __/
9
+ # |_|_| \__,_|_| |_|___/_|\__,_|\__|_|\___/|_| |_|______/_/\_\___|_| |_|\__,_|_| |_|\__, |\___|
10
+ # __/ |
11
+ # |___/
12
+ # Permission is hereby granted, free of charge, to any person obtaining
13
+ # a copy of this software and associated documentation files (the
14
+ # "Software"), to deal in the Software without restriction, including
15
+ # without limitation the rights to use, copy, modify, merge, publish,
16
+ # distribute, sublicense, and/or sell copies of the Software, and to
17
+ # permit persons to whom the Software is furnished to do so, subject to
18
+ # the following conditions:
19
+ #
20
+ # The above copyright notice and this permission notice shall be
21
+ # included in all copies or substantial portions of the Software.
22
+ #
23
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
+ #++
31
+
32
+ require 'tr8n_core'
33
+
34
+ namespace :tr8n do
35
+
36
+ namespace :cache do
37
+
38
+ desc 'upgrades shared translation cache'
39
+ task :upgrade => :environment do
40
+ Tr8n.cache.upgrade_version
41
+ end
42
+
43
+ desc 'generates local file cache'
44
+ task :generate => :environment do
45
+ Tr8nCore::Generators::Cache::File.new.run
46
+ end
47
+
48
+ desc 'rolls back to the previous version'
49
+ task :rollback => :environment do
50
+ Tr8nCore::Generators::Cache::File.new.rollback
51
+ end
52
+
53
+ desc 'rolls up to the next version'
54
+ task :rollup => :environment do
55
+ Tr8nCore::Generators::Cache::File.new.rollup
56
+ end
57
+
58
+ end
59
+
60
+ end
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
  #--
3
- # Copyright (c) 2014 Michael Berkovich, TranslationExchange.com
3
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
4
4
  #
5
5
  # _______ _ _ _ ______ _
6
6
  # |__ __| | | | | (_) | ____| | |
@@ -30,12 +30,10 @@
30
30
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
31
  #++
32
32
 
33
- require 'dalli' if defined?(Dalli)
34
-
35
33
  class Tr8n::CacheAdapters::Rails < Tr8n::Cache
36
34
 
37
35
  def initialize
38
- Tr8n.logger.info("Initializing Rails cache...")
36
+ Tr8n.logger.info('Initializing Rails cache...')
39
37
  @cache = Rails.cache
40
38
  end
41
39
 
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2014 Michael Berkovich, TranslationExchange.com
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
3
  #
4
4
  # _______ _ _ _ ______ _
5
5
  # |__ __| | | | | (_) | ____| | |
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2014 Michael Berkovich, TranslationExchange.com
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
3
  #
4
4
  # _______ _ _ _ ______ _
5
5
  # |__ __| | | | | (_) | ____| | |
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2014 Michael Berkovich, TranslationExchange.com
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
3
  #
4
4
  # _______ _ _ _ ______ _
5
5
  # |__ __| | | | | (_) | ____| | |
@@ -34,11 +34,11 @@ module Tr8nClientSdk
34
34
  ############################################################
35
35
  # There are three ways to call the tr method
36
36
  #
37
- # tr(label, desc = "", tokens = {}, options = {})
37
+ # tr(label, desc = '', tokens = {}, options = {})
38
38
  # or
39
39
  # tr(label, tokens = {}, options = {})
40
40
  # or
41
- # tr(:label => label, :description => "", :tokens => {}, :options => {})
41
+ # tr(:label => label, :description => '', :tokens => {}, :options => {})
42
42
  ############################################################
43
43
  def tr(label, description = '', tokens = {}, options = {})
44
44
  params = Tr8n::Utils.normalize_tr_params(label, description, tokens, options)
@@ -65,7 +65,7 @@ module Tr8nClientSdk
65
65
  return text.tr8n_translated.html_safe
66
66
  end
67
67
 
68
- tr8n_current_language.translate(params).tr8n_translated.html_safe
68
+ Tr8n.session.target_language.translate(params).tr8n_translated.html_safe
69
69
  rescue Tr8n::Exception => ex
70
70
  #pp ex, ex.backtrace
71
71
  Tr8n.logger.error(ex.message)
@@ -74,24 +74,24 @@ module Tr8nClientSdk
74
74
  end
75
75
 
76
76
  # for translating labels
77
- def trl(label, description = "", tokens = {}, options = {})
77
+ def trl(label, description = '', tokens = {}, options = {})
78
78
  params = Tr8n::Utils.normalize_tr_params(label, description, tokens, options)
79
79
  params[:options][:skip_decorations] = true
80
80
  tr(params)
81
81
  end
82
82
 
83
83
  # flash notice
84
- def trfn(label, desc = "", tokens = {}, options = {})
84
+ def trfn(label, desc = '', tokens = {}, options = {})
85
85
  flash[:trfn] = tr(Tr8n::Utils.normalize_tr_params(label, desc, tokens, options))
86
86
  end
87
87
 
88
88
  # flash error
89
- def trfe(label, desc = "", tokens = {}, options = {})
89
+ def trfe(label, desc = '', tokens = {}, options = {})
90
90
  flash[:trfe] = tr(Tr8n::Utils.normalize_tr_params(label, desc, tokens, options))
91
91
  end
92
92
 
93
93
  # flash warning
94
- def trfw(label, desc = "", tokens = {}, options = {})
94
+ def trfw(label, desc = '', tokens = {}, options = {})
95
95
  flash[:trfw] = tr(Tr8n::Utils.normalize_tr_params(label, desc, tokens, options))
96
96
  end
97
97
 
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2014 Michael Berkovich, TranslationExchange.com
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
3
  #
4
4
  # _______ _ _ _ ______ _
5
5
  # |__ __| | | | | (_) | ____| | |
@@ -73,36 +73,13 @@ module Tr8nClientSdk
73
73
  nil
74
74
  end
75
75
 
76
- def tr8n_cookie_name
77
- "tr8n_#{tr8n_application.key}"
78
- end
79
-
80
- def tr8n_cookie
81
- request.cookies[tr8n_cookie_name]
82
- end
83
-
84
- def tr8n_cookie_params
85
- @tr8n_cookie_params ||= begin
86
- if tr8n_cookie
87
- cookie_params = Tr8n::Utils.decode_and_verify_params(tr8n_cookie, tr8n_application.secret)
88
- Tr8n.logger.info(cookie_params.inspect)
89
- cookie_params
90
- else
91
- {}
92
- end
93
- end
94
- end
95
-
96
76
  def tr8n_translator_locale
97
- tr8n_cookie_params["locale"]
77
+ tr8n_cookie_params['locale']
98
78
  end
99
79
 
100
- def tr8n_init_current_locale
80
+ def tr8n_locale
101
81
  self.send(Tr8n.config.current_locale_method) if Tr8n.config.current_locale_method
102
82
  rescue
103
- # fallback onto the cookie params from the service
104
- return tr8n_translator_locale if tr8n_translator_locale
105
-
106
83
  # fallback to the default session based locale implementation
107
84
  # choose the first language from the accepted languages header
108
85
  session[:locale] = tr8n_user_preferred_locale unless session[:locale]
@@ -110,33 +87,27 @@ module Tr8nClientSdk
110
87
  session[:locale] || Tr8n.config.default_locale
111
88
  end
112
89
 
113
- def tr8n_init_current_user
90
+ def tr8n_user
114
91
  self.send(Tr8n.config.current_user_method) if Tr8n.config.current_user_method
115
92
  rescue
116
93
  nil
117
94
  end
118
95
 
119
- def tr8n_init_current_translator
120
- if tr8n_cookie_params["translator"]
121
- Tr8n::Translator.new(tr8n_cookie_params["translator"].merge(:application => tr8n_application))
122
- else
123
- nil
124
- end
125
- end
126
-
127
96
  def tr8n_init_client_sdk
128
97
  return if Tr8n.config.disabled?
129
98
 
130
99
  @tr8n_started_at = Time.now
131
100
 
132
- Tr8n.session.init
133
-
134
- Tr8n.session.current_user = tr8n_init_current_user
135
- Tr8n.session.current_language = tr8n_application.language(tr8n_init_current_locale)
136
- Tr8n.session.current_translator = tr8n_init_current_translator
101
+ Tr8n.session.init(
102
+ :cookies => request.cookies,
103
+ :locale => tr8n_locale,
104
+ :user => tr8n_user,
105
+ :source => tr8n_source,
106
+ :component => tr8n_component
107
+ )
137
108
 
138
- Tr8n.session.current_source = tr8n_source
139
- Tr8n.session.current_component = tr8n_component
109
+ I18n.enforce_available_locales = false
110
+ I18n.locale = Tr8n.session.current_language.locale
140
111
  end
141
112
 
142
113
  def tr8n_reset_client_sdk
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2014 Michael Berkovich, TranslationExchange.com
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
3
  #
4
4
  # _______ _ _ _ ______ _
5
5
  # |__ __| | | | | (_) | ____| | |
@@ -118,14 +118,13 @@ module Tr8nClientSdk
118
118
  return ""
119
119
  end
120
120
 
121
- Thread.current[:block_options] ||= []
122
- Thread.current[:block_options].push(opts)
121
+ Tr8n.session.push_block_options(opts)
123
122
 
124
123
  if block_given?
125
124
  ret = capture(&block)
126
125
  end
127
126
 
128
- Thread.current[:block_options].pop
127
+ Tr8n.session.pop_block_options
129
128
  ret
130
129
  end
131
130
  alias_method :tr8n_block, :tr8n_with_options_tag
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2014 Michael Berkovich, TranslationExchange.com
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
3
  #
4
4
  # _______ _ _ _ ______ _
5
5
  # |__ __| | | | | (_) | ____| | |
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2014 Michael Berkovich, TranslationExchange.com
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
3
  #
4
4
  # _______ _ _ _ ______ _
5
5
  # |__ __| | | | | (_) | ____| | |
@@ -30,5 +30,5 @@
30
30
  #++
31
31
 
32
32
  module Tr8nClientSdk
33
- VERSION = '4.1.6'
33
+ VERSION = '4.2.1'
34
34
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2014 Michael Berkovich, TranslationExchange.com
2
+ # Copyright (c) 2015 Translation Exchange Inc. http://translationexchange.com
3
3
  #
4
4
  # _______ _ _ _ ______ _
5
5
  # |__ __| | | | | (_) | ____| | |
@@ -34,6 +34,7 @@ require "tr8n_client_sdk/core/string"
34
34
  require "tr8n_client_sdk/railtie"
35
35
  require "tr8n_client_sdk/engine"
36
36
  require "tr8n/cache_adapters/rails"
37
+ require "i18n/backend/tr8n"
37
38
 
38
39
  module Tr8nClientSdk
39
40
 
metadata CHANGED
@@ -1,46 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tr8n_client_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.6
4
+ version: 4.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Berkovich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-28 00:00:00.000000000 Z
11
+ date: 2015-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: '4.1'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: '4.1'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: tr8n_core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '4.0'
33
+ version: '4.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '4.0'
40
+ version: '4.2'
41
41
  description: Client SDK for Tr8n translation engine.
42
42
  email:
43
- - michael@tr8nhub.com
43
+ - michael@translationexchange.com
44
44
  executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
@@ -48,12 +48,14 @@ files:
48
48
  - LICENSE
49
49
  - README.md
50
50
  - Rakefile
51
+ - app/controllers/tr8n_client_sdk/cache_controller.rb
51
52
  - app/views/tr8n_client_sdk/tags/_language_selector.html.erb
52
53
  - app/views/tr8n_client_sdk/tags/_language_strip.html.erb
53
54
  - app/views/tr8n_client_sdk/tags/_powered_by_tr8n.html.erb
54
55
  - app/views/tr8n_client_sdk/tags/_scripts.html.erb
55
56
  - config/routes.rb
56
- - lib/tasks/tr8n_client_sdk.rake
57
+ - lib/i18n/backend/tr8n.rb
58
+ - lib/tasks/tr8n.rake
57
59
  - lib/tr8n/cache_adapters/rails.rb
58
60
  - lib/tr8n_client_sdk.rb
59
61
  - lib/tr8n_client_sdk/core/string.rb