i18n-filter.rb:
module RoutingFilter
class RefineryLocales < Filter
def around_recognize(path, env, &block)
if ::Refinery::I18n.enabled?
if path =~ %r{^/(#{::Refinery::I18n.locales.keys.join('|')})(/|$)}
path.sub! %r(^/(([a-zA-Z\-_])*)(?=/|$)) do
::I18n.locale = $1
''
end
path.sub!(%r{^$}) { '/' }
else
if path =~ /netzke/
netzke_user_id = env["action_dispatch.request.unsigned_session_cookie"]["netzke_user_id"]
::I18n.locale = User.find_by_id(netzke_user_id).locale unless netzke_user_id.nil?
else
::I18n.locale = ::Refinery::I18n.default_frontend_locale
end
end
Rails.logger.error ::I18n.locale
end
yield.tap do |params|
params[:locale] = ::I18n.locale if ::Refinery::I18n.enabled?
params
end
end
def around_generate(params, &block)
locale = params.delete(:locale) || ::I18n.locale
yield.tap do |result|
if ::Refinery::I18n.enabled? and
locale != ::Refinery::I18n.default_frontend_locale and
result !~ %r{^/(refinery|wymiframe)}
result.sub!(%r(^(http.?://[^/]*)?(.*))) { "#{$1}/#{locale}#{$2}" }
end
result
end
end
end
end