修改refinerycms-18n

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

 

你可能感兴趣的:(Rails)