tml-rails 5.4.6 → 5.5.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0301a87bd78a66f93bad4a3e824fbb00d5a513b
|
4
|
+
data.tar.gz: 04845d65cebb7ec8edb394e9ba904408d8f896b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cef4b611ae3f1d13d971e51d54388ca55f1abaf715134d51336ef4ff433f56fdc3e1c53924fd8c28d68bc1fbb1c8a26fbad434487ee380a63fa4889ead73e67
|
7
|
+
data.tar.gz: 9dc77cee4e5cb87c3fa637e4bbb3849c52d102041544d07538042dd3df97fd2bec2a7a817c20a81ddb4d94662dfae89c4f012126c388fe5da396575834ba8797
|
@@ -31,15 +31,7 @@
|
|
31
31
|
|
32
32
|
module TmlRails
|
33
33
|
module ActionCommonMethods
|
34
|
-
|
35
|
-
# There are three ways to call the tr method
|
36
|
-
#
|
37
|
-
# tr(label, desc = '', tokens = {}, options = {})
|
38
|
-
# or
|
39
|
-
# tr(label, tokens = {}, options = {})
|
40
|
-
# or
|
41
|
-
# tr(:label => label, :description => '', :tokens => {}, :options => {})
|
42
|
-
############################################################
|
34
|
+
|
43
35
|
def tr(label, description = '', tokens = {}, options = {})
|
44
36
|
params = Tml::Utils.normalize_tr_params(label, description, tokens, options)
|
45
37
|
return params[:label].html_safe if params[:label].tml_translated?
|
@@ -51,26 +43,7 @@ module TmlRails
|
|
51
43
|
params[:options][:host] = request.env['HTTP_HOST']
|
52
44
|
end
|
53
45
|
|
54
|
-
|
55
|
-
return Tml.config.default_language.translate(params[:label], params[:tokens], params[:options]).tml_translated.html_safe
|
56
|
-
end
|
57
|
-
|
58
|
-
# Translate individual sentences
|
59
|
-
if params[:options][:split]
|
60
|
-
text = params[:label]
|
61
|
-
sentences = Tml::Utils.split_sentences(text)
|
62
|
-
sentences.each do |sentence|
|
63
|
-
text = text.gsub(sentence, tml_current_language.translate(sentence, params[:description], params[:tokens], params[:options]))
|
64
|
-
end
|
65
|
-
return text.tml_translated.html_safe
|
66
|
-
end
|
67
|
-
|
68
|
-
Tml.session.target_language.translate(params).tml_translated.html_safe
|
69
|
-
rescue Tml::Exception => ex
|
70
|
-
#pp ex, ex.backtrace
|
71
|
-
Tml.logger.error(ex.message)
|
72
|
-
#Tml.logger.error(ex.message + "\n=> " + ex.backtrace.join("\n=> "))
|
73
|
-
label
|
46
|
+
Tml.translate(params)
|
74
47
|
end
|
75
48
|
|
76
49
|
# for translating labels
|
@@ -119,6 +92,10 @@ module TmlRails
|
|
119
92
|
tml_session.current_translator
|
120
93
|
end
|
121
94
|
|
95
|
+
def tml_default_locale
|
96
|
+
tml_session.application.default_locale
|
97
|
+
end
|
98
|
+
|
122
99
|
def tml_current_locale
|
123
100
|
tml_session.current_language.locale
|
124
101
|
end
|
@@ -52,18 +52,6 @@ module TmlRails
|
|
52
52
|
|
53
53
|
module InstanceMethods
|
54
54
|
|
55
|
-
# Returns all browser accepted locales
|
56
|
-
def tml_browser_accepted_locales
|
57
|
-
@tml_browser_accepted_locales ||= Tml::Utils.browser_accepted_locales(request.env['HTTP_ACCEPT_LANGUAGE']).join(',')
|
58
|
-
end
|
59
|
-
|
60
|
-
# Overwrite this method in a controller to assign a custom source for all views
|
61
|
-
def tml_source
|
62
|
-
"/#{controller_name}/#{action_name}"
|
63
|
-
rescue
|
64
|
-
self.class.name
|
65
|
-
end
|
66
|
-
|
67
55
|
# Returns data from cookie set by the agent
|
68
56
|
def tml_cookie
|
69
57
|
@tml_cookie ||= begin
|
@@ -79,61 +67,57 @@ module TmlRails
|
|
79
67
|
{}
|
80
68
|
end
|
81
69
|
|
70
|
+
# Overwrite this method in a controller to assign a custom source for all views
|
71
|
+
def tml_source
|
72
|
+
"/#{controller_name}/#{action_name}"
|
73
|
+
rescue
|
74
|
+
"/classes/#{self.class.name}"
|
75
|
+
end
|
76
|
+
|
82
77
|
# Locale is retrieved from method => params => cookie => subdomain => browser accepted locales
|
83
78
|
# Alternatively, this method can be overwritten
|
84
79
|
def tml_locale
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
begin
|
90
|
-
locale = self.send(Tml.config.current_locale_method)
|
91
|
-
rescue
|
92
|
-
locale = nil
|
93
|
-
end
|
94
|
-
end
|
80
|
+
# if locale has been passed by a param, it will be in the params hash
|
81
|
+
if Tml.config.locale_strategy == 'param'
|
82
|
+
return params[Tml.config.locale_param] # will be nil without ?locale=:locale
|
83
|
+
end
|
95
84
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
else
|
105
|
-
locale = tml_browser_accepted_locales
|
106
|
-
end
|
107
|
-
end
|
108
|
-
else
|
109
|
-
locale = tml_cookie[:locale] = params[:locale]
|
110
|
-
cookies[Tml::Utils.cookie_name(Tml.config.application[:key])] = Tml::Utils.encode(tml_cookie, Tml.config.application[:token])
|
111
|
-
end
|
85
|
+
if Tml.config.locale_strategy == 'pre-path'
|
86
|
+
return params[Tml.config.locale_param] # will be nil without /:locale
|
87
|
+
end
|
88
|
+
|
89
|
+
if Tml.config.locale_strategy == 'pre-domain'
|
90
|
+
locale = request.subdomains.first
|
91
|
+
if locale.nil? or not locale.match(Tml.config.locale_expression)
|
92
|
+
locale = Tml.config.locale[:default]
|
112
93
|
end
|
94
|
+
return locale
|
95
|
+
end
|
113
96
|
|
114
|
-
|
97
|
+
if Tml.config.locale_strategy == 'custom-domain'
|
98
|
+
host = "#{request.host}#{[80, 443].include?(request.port) ? '' : ":#{request.port}"}"
|
99
|
+
locale = Tml.config.locale[:mapping].invert[host] # will be nil if host is wrong
|
100
|
+
return locale
|
115
101
|
end
|
102
|
+
|
103
|
+
nil
|
116
104
|
end
|
117
105
|
|
118
106
|
def tml_viewing_user
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
{}
|
125
|
-
end
|
107
|
+
unless Tml.config.current_user_method.blank?
|
108
|
+
begin
|
109
|
+
self.send(Tml.config.current_user_method)
|
110
|
+
rescue
|
111
|
+
{}
|
126
112
|
end
|
127
113
|
end
|
128
114
|
end
|
129
115
|
|
130
116
|
def tml_translator
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
nil
|
136
|
-
end
|
117
|
+
if tml_cookie[:translator]
|
118
|
+
Tml::Translator.new(tml_cookie[:translator])
|
119
|
+
else
|
120
|
+
nil
|
137
121
|
end
|
138
122
|
end
|
139
123
|
|
@@ -148,9 +132,30 @@ module TmlRails
|
|
148
132
|
|
149
133
|
@tml_started_at = Time.now
|
150
134
|
|
135
|
+
requested_locale = desired_locale = tml_locale
|
136
|
+
|
137
|
+
# if user has a custom method for providing the locale, use it
|
138
|
+
if Tml.config.current_locale_method
|
139
|
+
begin
|
140
|
+
desired_locale = self.send(Tml.config.current_locale_method)
|
141
|
+
rescue
|
142
|
+
desired_locale = requested_locale
|
143
|
+
end
|
144
|
+
end
|
145
|
+
# check if locale was previously stored in a cookie
|
146
|
+
desired_locale ||= Tml.config.locale_cookie_enabled? ? tml_cookie[:locale] : nil
|
147
|
+
# fallback onto the browser locale
|
148
|
+
desired_locale ||= Tml.config.locale_browser_enabled? ? Tml::Utils.browser_accepted_locales(
|
149
|
+
request.env['HTTP_ACCEPT_LANGUAGE']
|
150
|
+
).join(',') : nil
|
151
|
+
|
152
|
+
# pp requested_locale: requested_locale, desired_locale: desired_locale
|
153
|
+
# pp cookie: tml_cookie
|
154
|
+
|
155
|
+
# init SDK with desired locale and get the actual locale supported in the app
|
151
156
|
Tml.session.init(
|
152
157
|
:source => tml_source,
|
153
|
-
:locale =>
|
158
|
+
:locale => desired_locale,
|
154
159
|
:user => tml_viewing_user,
|
155
160
|
:translator => tml_translator,
|
156
161
|
:access_token => tml_access_token
|
@@ -159,7 +164,69 @@ module TmlRails
|
|
159
164
|
if defined? I18n.enforce_available_locales
|
160
165
|
I18n.enforce_available_locales = false
|
161
166
|
end
|
162
|
-
I18n.locale =
|
167
|
+
I18n.locale = tml_current_locale
|
168
|
+
|
169
|
+
# pp current_locale: tml_current_locale
|
170
|
+
|
171
|
+
# check if we want to store the last selected locale in the cookie
|
172
|
+
if requested_locale == tml_current_locale and Tml.config.locale_cookie_enabled?
|
173
|
+
tml_cookie[:locale] = tml_current_locale
|
174
|
+
cookies[Tml::Utils.cookie_name(Tml.config.application[:key])] = {
|
175
|
+
:value => Tml::Utils.encode(tml_cookie),
|
176
|
+
:expires => 1.year.from_now,
|
177
|
+
:domain => Tml.config.locale[:domain]
|
178
|
+
}
|
179
|
+
end
|
180
|
+
|
181
|
+
# pp cookie: tml_cookie
|
182
|
+
# pp redirect: Tml.config.locale_redirect_enabled?
|
183
|
+
|
184
|
+
if Tml.config.locale_redirect_enabled?
|
185
|
+
if Tml.config.locale[:skip_default] and tml_current_locale == tml_default_locale
|
186
|
+
# first lets see if we are in default locale and user doesn't want to show locale in url
|
187
|
+
if Tml.config.locale_strategy == 'pre-path' and not requested_locale.nil?
|
188
|
+
return redirect_to(Tml.config.locale_param => nil)
|
189
|
+
end
|
190
|
+
|
191
|
+
if Tml.config.locale_strategy == 'pre-domain' and request.subdomains.any?
|
192
|
+
fragments = request.host.split('.')
|
193
|
+
if fragments.first.match(Tml.config.locale_expression)
|
194
|
+
if Tml.config.locale[:default_subdomain]
|
195
|
+
fragments[0] = Tml.config.locale[:default_subdomain]
|
196
|
+
else
|
197
|
+
fragments.shift
|
198
|
+
end
|
199
|
+
end
|
200
|
+
return redirect_to(host: fragments.join('.'))
|
201
|
+
end
|
202
|
+
|
203
|
+
if Tml.config.locale_strategy == 'custom-domain'
|
204
|
+
host = Tml.config.locale[:mapping][tml_default_locale]
|
205
|
+
return redirect_to(host: host)
|
206
|
+
end
|
207
|
+
elsif requested_locale != tml_current_locale
|
208
|
+
# otherwise, the locale is not the same as what was requested, deal with it
|
209
|
+
if Tml.config.locale_strategy == 'pre-path'
|
210
|
+
return redirect_to(Tml.config.locale_param => tml_current_locale)
|
211
|
+
end
|
212
|
+
|
213
|
+
if Tml.config.locale_strategy == 'pre-domain'
|
214
|
+
fragments = request.host.split('.')
|
215
|
+
if request.subdomains.any?
|
216
|
+
fragments[0] = tml_current_locale
|
217
|
+
else
|
218
|
+
fragments.unshift(tml_current_locale)
|
219
|
+
end
|
220
|
+
return redirect_to(host: fragments.join('.'))
|
221
|
+
end
|
222
|
+
|
223
|
+
if Tml.config.locale_strategy == 'custom-domain'
|
224
|
+
host = Tml.config.locale[:mapping][tml_current_locale]
|
225
|
+
host ||= Tml.config.locale[:mapping][tml_default_locale]
|
226
|
+
return redirect_to(host: host)
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|
163
230
|
|
164
231
|
if tml_current_translator and tml_current_translator.inline?
|
165
232
|
I18n.reload!
|
@@ -128,10 +128,12 @@ module TmlRails
|
|
128
128
|
agent_host += "?ts=#{t.to_i}"
|
129
129
|
end
|
130
130
|
|
131
|
+
agent_config[:domain] = Tml.config.domain if Tml.config.domain
|
131
132
|
agent_config[:locale] = tml_current_locale
|
132
133
|
agent_config[:source] = tml_current_source
|
133
134
|
agent_config[:css] = tml_application.css
|
134
135
|
agent_config[:sdk] = Tml.respond_to?(:full_version) ? Tml.full_version : Tml::VERSION
|
136
|
+
agent_config[:locale_strategy] = Tml.config.agent_locale_strategy
|
135
137
|
agent_config[:languages] = []
|
136
138
|
|
137
139
|
tml_application.languages.each do |lang|
|
data/lib/tml_rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tml-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Berkovich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '5.
|
33
|
+
version: '5.6'
|
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: '5.
|
40
|
+
version: '5.6'
|
41
41
|
description: Translation Markup Language from Translation Exchange.
|
42
42
|
email:
|
43
43
|
- support@translationexchange.com
|
@@ -85,4 +85,3 @@ signing_key:
|
|
85
85
|
specification_version: 4
|
86
86
|
summary: Tml Client SDK for Ruby on Rails
|
87
87
|
test_files: []
|
88
|
-
has_rdoc:
|