Class: Otto::Locale::Middleware
- Inherits:
-
Object
- Object
- Otto::Locale::Middleware
- Defined in:
- lib/otto/locale/middleware.rb
Overview
Locale detection and resolution middleware
Sets env based on:
-
URL parameter (?locale=es)
-
Session preference (session)
-
HTTP Accept-Language header
-
Default locale
Configuration:
use Otto::Locale::Middleware,
available_locales: { 'en' => 'English', 'es' => 'Spanish' },
default_locale: 'en',
debug: false
Instance Attribute Summary collapse
-
#available_locales ⇒ Object
readonly
Returns the value of attribute available_locales.
-
#default_locale ⇒ Object
readonly
Returns the value of attribute default_locale.
Instance Method Summary collapse
-
#call(env) ⇒ Array
Process request and set locale.
-
#initialize(app, available_locales:, default_locale:, fallback_locale: nil, debug: false) ⇒ Middleware
constructor
Initialize locale middleware.
Constructor Details
#initialize(app, available_locales:, default_locale:, fallback_locale: nil, debug: false) ⇒ Middleware
Initialize locale middleware
42 43 44 45 46 47 48 49 50 |
# File 'lib/otto/locale/middleware.rb', line 42 def initialize(app, available_locales:, default_locale:, fallback_locale: nil, debug: false) @app = app @available_locales = available_locales @default_locale = default_locale @fallback_locale = fallback_locale @debug = debug validate_config! end |
Instance Attribute Details
#available_locales ⇒ Object (readonly)
Returns the value of attribute available_locales.
33 34 35 |
# File 'lib/otto/locale/middleware.rb', line 33 def available_locales @available_locales end |
#default_locale ⇒ Object (readonly)
Returns the value of attribute default_locale.
33 34 35 |
# File 'lib/otto/locale/middleware.rb', line 33 def default_locale @default_locale end |
Instance Method Details
#call(env) ⇒ Array
Process request and set locale
56 57 58 59 60 61 62 63 |
# File 'lib/otto/locale/middleware.rb', line 56 def call(env) locale = detect_locale(env) env['otto.locale'] = locale debug_log(env, locale) if @debug @app.call(env) end |