module Tr8n::ActionControllerExtension::InstanceMethods

Public Instance Methods

init_tr8n() click to toggle source
# 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 = {}) click to toggle source

There are two ways to call the tr method

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

# 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_locales() click to toggle source

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

# 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_locale() click to toggle source
# 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_source() click to toggle source
# 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_user() click to toggle source
# File lib/tr8n/extensions/action_controller_extension.rb, line 82
def tr8n_init_current_user
  unless Tr8n::Config.site_user_info_enabled? # 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_ip() click to toggle source
# 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_locale() click to toggle source
# 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 = {}) click to toggle source

flash error

# 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 = {}) click to toggle source

flash notice

# 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 = {}) click to toggle source

flash error

# 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 = {}) click to toggle source

for translating labels

# 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