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