Sha256: bb8a8d816d3c57bfd160488d104e3a99e6fd2db93e244b20372692d0439e5e74

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

module WorldFlags
  module Helper
    module Locale
      def set_locale    
        I18n.locale = locales.select_first_in(valid_locales.downcase)
      end  

      def valid_locales
        if I18n.respond_to?(:available_locales) && I18n.available_locales.present?
          I18n.available_locales
        else
          WorldFlags.valid_locales
        end
      end

      # ensure all country/language/domain types are mapped to their equivalent locale code
      def locales
        locale_sources.compact.downcase.map {|loc| WorldFlags.locale(loc) unless loc.blank? }
      end

      def locale_sources
        [params[:locale], extract_locale_from_tld, browser_locale, ip_country_code, I18n.default_locale]
      end
 
      # Get locale from top-level domain or return nil if such locale is not available
      # You have to put something like:
      #   127.0.0.1 application.com
      #   127.0.0.1 application.it
      #   127.0.0.1 application.pl
      # in your /etc/hosts file to try this out locally
      def extract_locale_from_tld
        I18n.available_locales.include?(parsed_locale.to_sym) ? parsed_locale  : nil
      end      

      def parsed_locale
        WorldFlags.locale(parsed_domain)
      end

      def parsed_domain
        request.host.split('.').last
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
world-flags-0.4.2 lib/world_flags/helper/locale.rb