tml 5.5.4 → 5.6.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: 01627bae72095f4b9e7ce0e7075321bf8c6354fa
4
- data.tar.gz: a2a539378307191e667ce9624a9c4708c3904412
3
+ metadata.gz: 5346ec2d7d296d5fda202794dde03edb2fac349e
4
+ data.tar.gz: e97d96c35d07372e8cb0188c38b44758ca460a90
5
5
  SHA512:
6
- metadata.gz: 40bb60e7df1e3a58d41c5fd8eec56848c7290e553646701d1895c69b73c37f51481fbb3be1aa96973b869804f16838458e565a135e2578ee0fab08f4be140372
7
- data.tar.gz: f469500ca7422f2f43e58f11b8184ebd832c2aeb6a501482d83c89bb0b1dd443132204676e70525f4bbca1180ce2161cd62a544a3a722b859a8859141c42da94
6
+ metadata.gz: 17559b2cd7a8b668a81de85d96f3315643587352084f8f367fe34a27989c951a965d12ab482483483f558a161a3127f785689161097d2701025304e080aa375c
7
+ data.tar.gz: 37ea474a9f2502c584c5f87672261bf77587370dfddce5571b402c59a287ab37a7f30affe4f02205440d902b544b03978a16bc204233bf395f33d5a630332cec
data/lib/tml.rb CHANGED
@@ -38,6 +38,30 @@ module Tml
38
38
  module Decorators end
39
39
  module CacheAdapters end
40
40
  module Generators end
41
+
42
+ def self.default_language
43
+ Tml.config.default_language
44
+ end
45
+
46
+ def self.current_language
47
+ Tml.session.current_language
48
+ end
49
+
50
+ def self.language(locale)
51
+ Tml.session.application.language(locale)
52
+ end
53
+
54
+ def self.translate(label, description = '', tokens = {}, options = {})
55
+ Tml.session.translate(label, description, tokens, options)
56
+ end
57
+
58
+ def self.with_options(opts)
59
+ Tml.session.with_options(opts) do
60
+ if block_given?
61
+ yield
62
+ end
63
+ end
64
+ end
41
65
  end
42
66
 
43
67
  %w(tml/base.rb tml tml/api tml/rules_engine tml/tokens tml/tokenizers tml/decorators tml/cache_adapters tml/cache tml/ext).each do |f|
@@ -194,7 +194,7 @@ class Tml::Application < Tml::Base
194
194
  # Returns source by key
195
195
  def source(key, locale)
196
196
  self.sources ||= {}
197
- self.sources[key] ||= Tml::Source.new(
197
+ self.sources["#{locale}/#{key}"] ||= Tml::Source.new(
198
198
  :application => self,
199
199
  :source => key
200
200
  ).fetch_translations(locale)
data/lib/tml/config.rb CHANGED
@@ -76,7 +76,7 @@ module Tml
76
76
  class Config
77
77
  # Configuration Attributes
78
78
  attr_accessor :enabled, :locale, :default_level, :format, :application, :postoffice, :context_rules, :logger, :cache, :default_tokens, :localization
79
- attr_accessor :auto_init, :source_separator
79
+ attr_accessor :auto_init, :source_separator, :domain
80
80
 
81
81
  # Used by Rails and Sinatra extensions
82
82
  attr_accessor :current_locale_method, :current_user_method, :translator_options, :i18n_backend
@@ -89,21 +89,29 @@ module Tml
89
89
  @enabled = true
90
90
  @default_level = 0
91
91
  @format = :html
92
- @subdomains = false
93
92
  @auto_init = true
94
93
  @source_separator = '@:@'
95
94
 
96
95
  @api_client = {
97
- class: Tml::Api::Client,
98
- timeout: 5,
99
- open_timeout: 2
96
+ class: Tml::Api::Client,
97
+ timeout: 5,
98
+ open_timeout: 2
100
99
  }
101
100
 
102
101
  @locale = {
103
- default: 'en',
104
- method: 'current_locale',
105
- subdomain: false,
106
- extension: false
102
+ default: 'en', # default locale
103
+ method: 'current_locale', # method to use for user selected locale, if nil, the rest will be a fallback
104
+ param: 'locale', # the way to name the param
105
+ strategy: 'param', # approach param, pre-path, pre-domain, custom-domain
106
+ redirect: true, # if TML should handle locale logic redirects
107
+ skip_default: false, # if the default locales should not be visible
108
+ browser: true, # if you want to use a browser header to determine the locale
109
+ cookie: true, # if you want to store user selected locale in the cookie
110
+ # default_host: '', # if user wants to not display default locale, we need to know the default host
111
+ # mapping: { # domain to locale mapping
112
+ # en: '',
113
+ # ru: '',
114
+ # }
107
115
  }
108
116
 
109
117
  @agent = {
@@ -240,7 +248,7 @@ module Tml
240
248
  :em => '<em>{$0}</em>',
241
249
  :italic => '<i>{$0}</i>',
242
250
  :i => '<i>{$0}</i>',
243
- :link => "<a href='{$href}'>{$0}</a>",
251
+ :link => "<a href='{$href}' class='{$class}' style='{$style}' title='{$title}'>{$0}</a>",
244
252
  :br => '<br>{$0}',
245
253
  :strike => '<strike>{$0}</strike>',
246
254
  :div => "<div id='{$id}' class='{$class}' style='{$style}'>{$0}</div>",
@@ -339,6 +347,41 @@ module Tml
339
347
  not enabled?
340
348
  end
341
349
 
350
+ def locale_expression
351
+ /^[a-z]{2}(-[A-Z]{2,3})?$/
352
+ end
353
+
354
+ def locale_strategy
355
+ locale[:strategy] || 'param'
356
+ end
357
+
358
+ def agent_locale_strategy
359
+ locale.merge(param: locale_param)
360
+ end
361
+
362
+ def locale_param
363
+ locale[:param] || 'locale'
364
+ end
365
+
366
+ def current_locale_method
367
+ locale[:method] || @current_locale_method
368
+ end
369
+
370
+ def locale_cookie_enabled?
371
+ if %w(pre-domain custom-domain).include?(locale[:strategy])
372
+ return false
373
+ end
374
+ locale[:cookie].nil? || locale[:cookie]
375
+ end
376
+
377
+ def locale_browser_enabled?
378
+ locale[:browser].nil? || locale[:browser]
379
+ end
380
+
381
+ def locale_redirect_enabled?
382
+ locale[:redirect].nil? || locale[:redirect]
383
+ end
384
+
342
385
  def nested_value(hash, key, default_value = nil)
343
386
  parts = key.split('.')
344
387
  parts.each do |part|
@@ -50,7 +50,7 @@ class String
50
50
  end
51
51
 
52
52
  def tml_translated?
53
- @tml_translated
53
+ @tml_translated || index('<tml:label')
54
54
  end
55
55
 
56
56
  end
data/lib/tml/language.rb CHANGED
@@ -118,7 +118,8 @@ class Tml::Language < Tml::Base
118
118
  end
119
119
 
120
120
  def current_source(options)
121
- (options[:source] || Tml.session.block_option(:source) || Tml.session.current_source || 'undefined').to_s
121
+ return options[:source] if options and options[:source]
122
+ (Tml.session.block_option(:source) || Tml.session.current_source || 'undefined').to_s
122
123
  end
123
124
 
124
125
  #######################################################################################################
@@ -181,7 +182,7 @@ class Tml::Language < Tml::Base
181
182
  end
182
183
 
183
184
  # fetch translations grouped by source
184
- source_key = current_source(options)
185
+ source_key = current_source(params[:options])
185
186
  current_source_path = source_path
186
187
 
187
188
  # Dynamic sources are never registered under the parent source for fast retrieval
data/lib/tml/session.rb CHANGED
@@ -121,6 +121,34 @@ module Tml
121
121
  current_translator and current_translator.inline?
122
122
  end
123
123
 
124
+ def translate(label, description = '', tokens = {}, options = {})
125
+ params = Tml::Utils.normalize_tr_params(label, description, tokens, options)
126
+ return params[:label] if params[:label].tml_translated?
127
+
128
+ params[:options][:caller] ||= caller
129
+
130
+ if Tml.config.disabled?
131
+ return Tml.config.default_language.translate(params[:label], params[:tokens], params[:options]).tml_translated
132
+ end
133
+
134
+ # Translate individual sentences
135
+ if params[:options][:split]
136
+ text = params[:label]
137
+ sentences = Tml::Utils.split_sentences(text)
138
+ sentences.each do |sentence|
139
+ text = text.gsub(sentence, target_language.translate(sentence, params[:description], params[:tokens], params[:options]))
140
+ end
141
+ return text.tml_translated
142
+ end
143
+
144
+ target_language.translate(params).tml_translated
145
+ rescue Tml::Exception => ex
146
+ #pp ex, ex.backtrace
147
+ Tml.logger.error(ex.message)
148
+ #Tml.logger.error(ex.message + "\n=> " + ex.backtrace.join("\n=> "))
149
+ label
150
+ end
151
+
124
152
  #########################################################
125
153
  ## Block Options
126
154
  #########################################################
@@ -161,6 +189,7 @@ module Tml
161
189
  pop_block_options
162
190
  ret
163
191
  end
192
+ alias_method :with_options, :with_block_options
164
193
 
165
194
  end
166
195
  end
@@ -155,6 +155,8 @@ module Tml
155
155
  end
156
156
  end
157
157
 
158
+ # remove unused attributes
159
+ default_decoration = default_decoration.gsub(/\{\$[^}]*\}/, '')
158
160
  default_decoration
159
161
  end
160
162
 
data/lib/tml/utils.rb CHANGED
@@ -46,15 +46,15 @@ module Tml
46
46
  :label => label,
47
47
  :description => nil,
48
48
  :tokens => description,
49
- :options => tokens
49
+ :options => tokens || {}
50
50
  }
51
51
  end
52
52
 
53
53
  {
54
54
  :label => label,
55
55
  :description => description,
56
- :tokens => tokens,
57
- :options => options
56
+ :tokens => tokens || {},
57
+ :options => options || {}
58
58
  }
59
59
  end
60
60
 
data/lib/tml/version.rb CHANGED
@@ -31,7 +31,7 @@
31
31
  #++
32
32
 
33
33
  module Tml
34
- VERSION = '5.5.4'
34
+ VERSION = '5.6.1'
35
35
 
36
36
  def self.full_version
37
37
  "tml-ruby v#{Tml::VERSION} (Faraday v#{Faraday::VERSION})"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tml
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.4
4
+ version: 5.6.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: 2016-06-22 00:00:00.000000000 Z
11
+ date: 2016-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday