Module: Tr8n::ActionControllerExtension::InstanceMethods

Defined in:
lib/tr8n/extensions/action_controller_extension.rb

Instance Method Summary collapse

Instance Method Details

#init_tr8nObject



95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 95

def init_tr8n
  # initialize request thread variables
  Tr8n::Config.init(tr8n_init_current_locale, tr8n_init_current_user, tr8n_init_current_source)
  
  # invalidate source for the current page
  Tr8n::Cache.invalidate_source(Tr8n::Config.current_source)

  # track user's last ip address  
  if Tr8n::Config.enable_country_tracking? and Tr8n::Config.current_user_is_translator?
    Tr8n::Config.current_translator.update_last_ip(tr8n_request_remote_ip)
  end
end

#tr(label, desc = "", tokens = {}, options = {}) ⇒ Object

There are two ways to call the tr method

tr(label, desc = “”, tokens = {}, options = {}) or tr(label, => “”, tokens => {, …})



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 115

def tr(label, desc = "", tokens = {}, options = {})

  return label if label.tr8n_translated?

  if desc.is_a?(Hash)
    options = desc
    tokens  = options[:tokens] || {}
    desc    = options[:desc] || ""
  end

  options.merge!(:caller => caller)
  options.merge!(:url => request.url)
  options.merge!(:host => request.env['HTTP_HOST'])

  unless Tr8n::Config.enabled?
    return Tr8n::TranslationKey.substitute_tokens(label, tokens, options)
  end

  Tr8n::Config.current_language.translate(label, desc, tokens, options)
end

#tr8n_browser_accepted_localesObject

Author: Iain Hecker reference: github.com/iain/http_accept_language



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 36

def tr8n_browser_accepted_locales
  @accepted_languages ||= request.env['HTTP_ACCEPT_LANGUAGE'].split(/\s*,\s*/).collect do |l|
    l += ';q=1.0' unless l =~ /;q=\d+\.\d+$/
    l.split(';q=')
  end.sort do |x,y|
    raise Tr8n::Exception.new("Not correctly formatted") unless x.first =~ /^[a-z\-]+$/i
    y.last.to_f <=> x.last.to_f
  end.collect do |l|
    l.first.downcase.gsub(/-[a-z]+$/i) { |x| x.upcase }
  end
rescue 
  []
end

#tr8n_init_current_localeObject



72
73
74
75
76
77
78
79
80
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 72

def tr8n_init_current_locale
  eval(Tr8n::Config.current_locale_method)
rescue
  # fallback to the default session based locale implementation
  # choose the first language from the accepted languages header
  session[:locale] = tr8n_user_preffered_locale unless session[:locale]
  session[:locale] = params[:locale] if params[:locale]
  session[:locale]
end

#tr8n_init_current_sourceObject



66
67
68
69
70
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 66

def tr8n_init_current_source
  "#{self.class.name.underscore.gsub("_controller", "")}/#{self.action_name}"
rescue
  self.class.name
end

#tr8n_init_current_userObject



82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 82

def tr8n_init_current_user
  unless Tr8n::Config. # deprecated - the site should run a standalone translation engine with a bridge
    user = Tr8n::Translator.find_by_id(session[:tr8n_translator_id]) if session[:tr8n_translator_id]
    user ||= Tr8n::Translator.new
    return user
  end
    
  eval(Tr8n::Config.current_user_method)
rescue
  Tr8n::Logger.error("Site user integration is enabled, but #{Tr8n::Config.current_user_method} method is not defined")
  Tr8n::Translator.new
end

#tr8n_request_remote_ipObject



58
59
60
61
62
63
64
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 58

def tr8n_request_remote_ip
  @remote_ip ||= if request.env['HTTP_X_FORWARDED_FOR']
    request.env['HTTP_X_FORWARDED_FOR'].split(',').first
  else
    request.remote_ip
  end
end

#tr8n_user_preffered_localeObject



50
51
52
53
54
55
56
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 50

def tr8n_user_preffered_locale
  tr8n_browser_accepted_locales.each do |locale|
    lang = Tr8n::Language.for(locale)
    return locale if lang and lang.enabled?
  end
  Tr8n::Config.default_locale
end

#trfe(label, desc = "", tokens = {}, options = {}) ⇒ Object

flash error



147
148
149
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 147

def trfe(label, desc = "", tokens = {}, options = {})
  flash[:trfe] = tr(label, desc, tokens, options)
end

#trfn(label, desc = "", tokens = {}, options = {}) ⇒ Object

flash notice



142
143
144
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 142

def trfn(label, desc = "", tokens = {}, options = {})
  flash[:trfn] = tr(label, desc, tokens, options)
end

#trfw(label, desc = "", tokens = {}, options = {}) ⇒ Object

flash error



152
153
154
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 152

def trfw(label, desc = "", tokens = {}, options = {})
  flash[:trfw] = tr(label, desc, tokens, options)
end

#trl(label, desc = "", tokens = {}, options = {}) ⇒ Object

for translating labels



137
138
139
# File 'lib/tr8n/extensions/action_controller_extension.rb', line 137

def trl(label, desc = "", tokens = {}, options = {})
  tr(label, desc, tokens, options.merge(:skip_decorations => true))
end