Module: Tr8n::ActionControllerExtension::InstanceMethods
- Defined in:
- lib/tr8n/extensions/action_controller_extension.rb
Instance Method Summary collapse
- #init_tr8n ⇒ Object
-
#tr(label, desc = "", tokens = {}, options = {}) ⇒ Object
There are two ways to call the tr method.
-
#tr8n_browser_accepted_locales ⇒ Object
Author: Iain Hecker reference: github.com/iain/http_accept_language.
- #tr8n_init_current_locale ⇒ Object
- #tr8n_init_current_source ⇒ Object
- #tr8n_init_current_user ⇒ Object
- #tr8n_request_remote_ip ⇒ Object
- #tr8n_user_preffered_locale ⇒ Object
-
#trfe(label, desc = "", tokens = {}, options = {}) ⇒ Object
flash error.
-
#trfn(label, desc = "", tokens = {}, options = {}) ⇒ Object
flash notice.
-
#trfw(label, desc = "", tokens = {}, options = {}) ⇒ Object
flash error.
-
#trl(label, desc = "", tokens = {}, options = {}) ⇒ Object
for translating labels.
Instance Method Details
#init_tr8n ⇒ Object
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 = {}, = {}) return label if label.tr8n_translated? if desc.is_a?(Hash) = desc tokens = [:tokens] || {} desc = [:desc] || "" end .merge!(:caller => caller) .merge!(:url => request.url) .merge!(:host => request.env['HTTP_HOST']) unless Tr8n::Config.enabled? return Tr8n::TranslationKey.substitute_tokens(label, tokens, ) end Tr8n::Config.current_language.translate(label, desc, tokens, ) end |
#tr8n_browser_accepted_locales ⇒ Object
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_locale ⇒ Object
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_source ⇒ Object
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_user ⇒ Object
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.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 ⇒ Object
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_locale ⇒ Object
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 = {}, = {}) flash[:trfe] = tr(label, desc, tokens, ) 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 = {}, = {}) flash[:trfn] = tr(label, desc, tokens, ) 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 = {}, = {}) flash[:trfw] = tr(label, desc, tokens, ) 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 = {}, = {}) tr(label, desc, tokens, .merge(:skip_decorations => true)) end |