Skip to content

Instantly share code, notes, and snippets.

@sdrew
Forked from madrobby/gist:3923148
Created November 29, 2012 20:34
Show Gist options
  • Save sdrew/4171724 to your computer and use it in GitHub Desktop.
Save sdrew/4171724 to your computer and use it in GitHub Desktop.

Revisions

  1. sdrew revised this gist Nov 29, 2012. 2 changed files with 3 additions and 1 deletion.
    1 change: 0 additions & 1 deletion gistfile1.rb
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,3 @@

    def set_locale
    locale = params[:locale].to_s

    3 changes: 3 additions & 0 deletions routes.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    scope "(:locale)", locale: /en|es|fr/ do
    # routes
    end
  2. @madrobby madrobby created this gist Oct 20, 2012.
    21 changes: 21 additions & 0 deletions gistfile1.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@

    def set_locale
    locale = params[:locale].to_s

    if !locale.blank?
    cookies[:preferred_lang] = { :value => locale, :expires => 10.years.from_now }
    session[:update_lang] = locale # remember preferred setting for this session
    else
    locale = cookies[:preferred_lang]
    end

    preferred = (locale.blank? ? request.user_preferred_languages : [locale]).map{|l| l.downcase.strip }

    best_match = preferred.find do |lang|
    AVAILABLE_LOCALES.include? lang # de-AT etc.
    end or preferred.map{|l| l[0..1] }.uniq.find do |lang|
    AVAILABLE_LOCALES.include? lang # en, de, etc.
    end or "en" # fall back to en if unknown

    I18n.locale = best_match
    end