Commit 1df215c3c54d7583bc7367de33cade041c791f0d

Authored by Antonio Terceiro
1 parent 8245496f

ActionItem830: forcing a default locale

app/controllers/application.rb
... ... @@ -71,7 +71,22 @@ class ApplicationController < ActionController::Base
71 71 end
72 72  
73 73 include GetText
74   - before_init_gettext :maybe_save_locale
  74 + before_init_gettext :maybe_save_locale, :default_locale
  75 + def maybe_save_locale
  76 + if params[:lang]
  77 + cookies[:lang] = params[:lang]
  78 + end
  79 + end
  80 + def default_locale
  81 + if Noosfero.default_locale
  82 + if cookies[:lang].blank?
  83 + set_locale Noosfero.default_locale
  84 + else
  85 + set_locale cookies[:lang]
  86 + end
  87 + end
  88 + end
  89 + protected :maybe_save_locale, :default_locale
75 90 init_gettext 'noosfero'
76 91  
77 92 include NeedsProfile
... ... @@ -123,12 +138,6 @@ class ApplicationController < ActionController::Base
123 138 current_user.person if logged_in?
124 139 end
125 140  
126   - def maybe_save_locale
127   - if params[:lang]
128   - cookies[:lang] = params[:lang]
129   - end
130   - end
131   -
132 141 def load_category
133 142 unless params[:category_path].blank?
134 143 path = params[:category_path].join('/')
... ...
app/helpers/language_helper.rb
1 1 module LanguageHelper
2 2 def language
3   - if Noosfero.available_locales.include?(GetText.locale.to_s) ||
4   - Noosfero.available_locales.include?(GetText.locale.language)
5   - GetText.locale.language
  3 + if Noosfero.available_locales.include?(locale.to_s) ||
  4 + Noosfero.available_locales.include?(locale.language)
  5 + locale.language
6 6 else
7   - Noosfero.default_locale
  7 + Noosfero.default_locale || 'en'
8 8 end
9 9 end
10 10  
... ...
config/environment.rb
... ... @@ -119,7 +119,7 @@ Noosfero.locales = {
119 119 'hy' => 'հայերեն լեզու',
120 120 }
121 121 # if you want to override this, do it in config/local.rb !
122   -Noosfero.default_locale = 'en'
  122 +Noosfero.default_locale = nil
123 123  
124 124 Tag.hierarchical = true
125 125  
... ...
features/internationalization.feature
... ... @@ -7,6 +7,12 @@ Feature: internationalization
7 7 When I go to the homepage
8 8 Then the site should be in English
9 9  
  10 + @default_locale_config
  11 + Scenario: different default locale configured locally
  12 + Given Noosfero is configured to use Portuguese as default
  13 + When I go to the homepage
  14 + Then the site should be in Portuguese
  15 +
10 16 Scenario: detecting language from browser
11 17 Given my browser prefers Portuguese
12 18 When I go to the homepage
... ...
features/step_definitions/internationalization_steps.rb
... ... @@ -21,6 +21,15 @@ def language_to_code(name)
21 21 language_to_header(name)
22 22 end
23 23  
  24 +Given /^Noosfero is configured to use (.+) as default$/ do |lang|
  25 + Noosfero.default_locale = language_to_code(lang)
  26 +end
  27 +
  28 +After('@default_locale_config') do
  29 + Noosfero.default_locale = nil
  30 + GetText.locale = nil
  31 +end
  32 +
24 33 Given /^a user accessed in (.*) before$/ do |lang|
25 34 session = Webrat::Session.new(Webrat.adapter_class.new(self))
26 35 session.extend(Webrat::Matchers)
... ...