Sha256: 07a424fdbe4db19feac8ea0be6ae6a85b138646c25e9963f1677bcbda18300dc

Contents?: true

Size: 1011 Bytes

Versions: 10

Compression:

Stored size: 1011 Bytes

Contents

module Locomotive
  module API
    module Middlewares

      class LocaleMiddleware

        def initialize(app)
          @app = app
        end

        # Rules (order is important):
        #
        # 1. check for the X-Locomotive-Locale header
        # 2. check for the locale request param
        # 3. check for the site default locale
        # 4. if none, take the default locomotive locale
        #
        def call(env)
          locale = find_locale(env)
          ::Mongoid::Fields::I18n.with_locale(locale) do
            @app.call(env)
          end
        end

        private

        def find_locale(env)
          env['HTTP_X_LOCOMOTIVE_LOCALE'].presence ||
          params(env)[:locale].presence ||
          params(env)['locale'].presence ||
          env['locomotive.site'].try(:default_locale).presence ||
          Locomotive.config.site_locales.first
        end

        def params(env)
          @params ||= Rack::Request.new(env).params
        end

      end

    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
locomotivecms-3.1.0.rc1 app/api/locomotive/api/middlewares/locale_middleware.rb
locomotivecms-3.0.1 app/api/locomotive/api/middlewares/locale_middleware.rb
locomotivecms-3.0.0 app/api/locomotive/api/middlewares/locale_middleware.rb
locomotivecms-3.0.0.rc7 app/api/locomotive/api/middlewares/locale_middleware.rb
locomotivecms-3.0.0.rc6 app/api/locomotive/api/middlewares/locale_middleware.rb
locomotivecms-3.0.0.rc5 app/api/locomotive/api/middlewares/locale_middleware.rb
locomotivecms-3.0.0.rc4 app/api/locomotive/api/middlewares/locale_middleware.rb
locomotivecms-3.0.0.rc3 app/api/locomotive/api/middlewares/locale_middleware.rb
locomotivecms-3.0.0.rc2 app/api/locomotive/api/middlewares/locale_middleware.rb
locomotivecms-3.0.0.rc1 app/api/locomotive/api/middlewares/locale_middleware.rb