Class: Tml::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/tml/session.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#applicationObject

Returns the value of attribute application.



40
41
42
# File 'lib/tml/session.rb', line 40

def application
  @application
end

#block_optionsObject

Returns the value of attribute block_options.



40
41
42
# File 'lib/tml/session.rb', line 40

def block_options
  @block_options
end

#current_languageObject

Returns the value of attribute current_language.



41
42
43
# File 'lib/tml/session.rb', line 41

def current_language
  @current_language
end

#current_localeObject

Returns the value of attribute current_locale.



41
42
43
# File 'lib/tml/session.rb', line 41

def current_locale
  @current_locale
end

#current_sourceObject

Returns the value of attribute current_source.



41
42
43
# File 'lib/tml/session.rb', line 41

def current_source
  @current_source
end

#current_translatorObject

Returns the value of attribute current_translator.



41
42
43
# File 'lib/tml/session.rb', line 41

def current_translator
  @current_translator
end

#current_userObject

Returns the value of attribute current_user.



41
42
43
# File 'lib/tml/session.rb', line 41

def current_user
  @current_user
end

Instance Method Details

#block_option(key, lookup = true) ⇒ Object

Block Options



156
157
158
159
160
161
162
163
164
165
# File 'lib/tml/session.rb', line 156

def block_option(key, lookup = true)
  if lookup
    block_options_queue.reverse.each do |options|
      value = options[key.to_s] || options[key.to_sym]
      return value if value
    end
    return nil
  end
  block_options[key]
end

#block_options_queueObject



176
177
178
# File 'lib/tml/session.rb', line 176

def block_options_queue
  @block_options ||= []
end

#init(opts = {}) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/tml/session.rb', line 43

def init(opts = {})
  return if Tml.config.disabled?

  # Tml.logger.debug(opts.inspect)

  Tml.cache.reset_version
  Tml.cache.namespace = opts[:namespace]

  init_application(opts)

  self
end

#init_application(opts = {}) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/tml/session.rb', line 56

def init_application(opts = {})
  self.current_user = opts[:user]
  self.current_source = opts[:source] || 'index'
  self.current_locale = opts[:locale]
  self.current_translator = opts[:translator]

  app_config = Tml.config.application || {}
  self.application = Tml::Application.new(
      :key => opts[:key] || app_config[:key],
      :access_token => opts[:access_token] || opts[:token] || app_config[:token],
      :host => opts[:host] || app_config[:host],
      :cdn_host => opts[:cdn_host] || app_config[:cdn_host]
  ).fetch

  if self.current_translator
    self.current_translator.application = self.application
  end

  self.current_locale = preferred_locale(opts[:locale])
  self.current_language = self.application.current_language(self.current_locale)
end

#inline_mode?Boolean

Returns:

  • (Boolean)


120
121
122
# File 'lib/tml/session.rb', line 120

def inline_mode?
  current_translator and current_translator.inline?
end

#pop_block_optionsObject



171
172
173
174
# File 'lib/tml/session.rb', line 171

def pop_block_options
  return unless @block_options
  @block_options.pop
end

#preferred_locale(locales) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/tml/session.rb', line 78

def preferred_locale(locales)
  return application.default_locale unless locales
  locales = locales.is_a?(String) ? locales.split(',') : locales

  locales.each do |locale|
    locale = Tml::Language.normalize_locale(locale)
    return locale if application.locales.include?(locale)
    locale = locale.split('-').first
    return locale if application.locales.include?(locale)
  end

  application.default_locale
end

#push_block_options(opts) ⇒ Object



167
168
169
# File 'lib/tml/session.rb', line 167

def push_block_options(opts)
  block_options_queue.push(opts)
end

#resetObject



92
93
94
95
96
97
98
99
# File 'lib/tml/session.rb', line 92

def reset
  self.application= nil
  self.current_user= nil
  self.current_language= nil
  self.current_translator= nil
  self.current_source= nil
  self.block_options= nil
end

#source_languageObject



109
110
111
112
# File 'lib/tml/session.rb', line 109

def source_language
  locale = block_option(:locale)
  locale ? application.language(locale) : application.language
end

#target_languageObject



114
115
116
117
118
# File 'lib/tml/session.rb', line 114

def target_language
  target_locale = block_option(:target_locale)
  language = (target_locale ? application.language(target_locale) : current_language)
  language || Tml.config.default_language
end

#translate(label, description = '', tokens = {}, options = {}) ⇒ Object



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/tml/session.rb', line 124

def translate(label, description = '', tokens = {}, options = {})
  params = Tml::Utils.normalize_tr_params(label, description, tokens, options)
  return params[:label] if params[:label].tml_translated?

  params[:options][:caller] ||= caller(1, 1)

  if Tml.config.disabled?
    return Tml.config.default_language.translate(params[:label], params[:tokens], params[:options]).tml_translated
  end

  # Translate individual sentences
  if params[:options][:split]
    text = params[:label]
    sentences = Tml::Utils.split_sentences(text)
    sentences.each do |sentence|
      text = text.gsub(sentence, target_language.translate(sentence, params[:description], params[:tokens], params[:options]))
    end
    return text.tml_translated
  end

  target_language.translate(params).tml_translated
rescue Tml::Exception => ex
  #pp ex, ex.backtrace
  Tml.logger.error(ex.message)
  #Tml.logger.error(ex.message + "\n=> " + ex.backtrace.join("\n=> "))
  label
end

#with_block_options(opts) ⇒ Object Also known as: with_options



184
185
186
187
188
189
190
191
# File 'lib/tml/session.rb', line 184

def with_block_options(opts)
  push_block_options(opts)
  if block_given?
    ret = yield
  end
  pop_block_options
  ret
end