Sha256: 3a723128a9d814fff4c7b979ff68777fa6d4d463945d82abbb474c6aaf83dff8

Contents?: true

Size: 1.35 KB

Versions: 22

Compression:

Stored size: 1.35 KB

Contents

require 'i18n'
require 'configatron'

module Lookout::Rack::Utils
  module I18n
    ::I18n.enforce_available_locales = false
    ::I18n.default_locale = configatron.default_locale

    def t(*args)
      ::I18n.t(*args)
    end

    def current_locale
      return @locale unless @locale.nil?

      accepted_languages.each do |lang, quality|
        if configatron.locales.include?(lang)
          @locale = lang
          return @locale
        end
      end

      # Just fallback to what we have set for the default
      @locale = configatron.default_locale
      return @locale
    end

    # We expect this to be called in a Rack request, but it will default to
    # returning [] if not.
    def accepted_languages
      accepted = defined?(request.env) && request.env['HTTP_ACCEPT_LANGUAGE']
      return [] if accepted.nil?

      # parse Accept-Language
      accepted = accepted.split(',')
      accepted = accepted.map { |l| l.strip.split(";") }
      accepted = accepted.map { |l|
        # en-US -> :en
        lang = l[0].split('-').first.downcase.to_sym

        if (l.size == 2)
          # quality present
          [lang, l[1].sub(/^q=/, "").to_f ]
        else
          # no quality specified => quality == 1
          [ lang, 1.0 ]
        end
      }
      # sort by quality
      accepted.sort { |left, right| right[1] <=> left[1] }
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
lookout-rack-utils-5.0.0.49 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-4.0.0.44 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.8.0.39 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.7.0.37 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.7.0.34 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.3.0.24 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.3.0.22 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.2.0.19 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.2.0.16 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.1.0.12 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.0.1.11 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.0.1 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-3.0.0 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-2.0.0 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-1.7.3 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-1.7.2 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-1.7.1 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-1.6.0 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-1.5.0 lib/lookout/rack/utils/i18n.rb
lookout-rack-utils-1.4.0 lib/lookout/rack/utils/i18n.rb