Sha256: c59e7ccd16eb63096957d841d6e4ea753980a22e2e1c57036f03f16ec66fc784

Contents?: true

Size: 964 Bytes

Versions: 1

Compression:

Stored size: 964 Bytes

Contents

class Brut::FrontEnd::RouteHooks::LocaleDetection < Brut::FrontEnd::RouteHook
  def before(app_session:,env:)
    http_accept_language = Brut::I18n::HTTPAcceptLanguage.from_header(env["HTTP_ACCEPT_LANGUAGE"])
    if !app_session.http_accept_language.known?
      app_session.http_accept_language = http_accept_language
    end
    best_locale = nil
    app_session.http_accept_language.weighted_locales.each do |weighted_locale|
      if ::I18n.available_locales.include?(weighted_locale.locale.to_sym)
        best_locale = weighted_locale.locale.to_sym
        break
      elsif ::I18n.available_locales.include?(weighted_locale.primary_only.locale.to_sym)
        best_locale = weighted_locale.primary_only.locale.to_sym
        break
      end
    end
    if best_locale
      ::I18n.locale = best_locale
    else
      SemanticLogger["Brut"].warn("None of the user's locales are available: #{app_session.http_accept_language}")
    end
    continue
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
brut-0.0.1 lib/brut/front_end/route_hooks/locale_detection.rb