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,7 +71,22 @@ class ApplicationController < ActionController::Base
71 end 71 end
72 72
73 include GetText 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 init_gettext 'noosfero' 90 init_gettext 'noosfero'
76 91
77 include NeedsProfile 92 include NeedsProfile
@@ -123,12 +138,6 @@ class ApplicationController < ActionController::Base @@ -123,12 +138,6 @@ class ApplicationController < ActionController::Base
123 current_user.person if logged_in? 138 current_user.person if logged_in?
124 end 139 end
125 140
126 - def maybe_save_locale  
127 - if params[:lang]  
128 - cookies[:lang] = params[:lang]  
129 - end  
130 - end  
131 -  
132 def load_category 141 def load_category
133 unless params[:category_path].blank? 142 unless params[:category_path].blank?
134 path = params[:category_path].join('/') 143 path = params[:category_path].join('/')
app/helpers/language_helper.rb
1 module LanguageHelper 1 module LanguageHelper
2 def language 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 else 6 else
7 - Noosfero.default_locale 7 + Noosfero.default_locale || 'en'
8 end 8 end
9 end 9 end
10 10
config/environment.rb
@@ -119,7 +119,7 @@ Noosfero.locales = { @@ -119,7 +119,7 @@ Noosfero.locales = {
119 'hy' => 'հայերեն լեզու', 119 'hy' => 'հայերեն լեզու',
120 } 120 }
121 # if you want to override this, do it in config/local.rb ! 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 Tag.hierarchical = true 124 Tag.hierarchical = true
125 125
features/internationalization.feature
@@ -7,6 +7,12 @@ Feature: internationalization @@ -7,6 +7,12 @@ Feature: internationalization
7 When I go to the homepage 7 When I go to the homepage
8 Then the site should be in English 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 Scenario: detecting language from browser 16 Scenario: detecting language from browser
11 Given my browser prefers Portuguese 17 Given my browser prefers Portuguese
12 When I go to the homepage 18 When I go to the homepage
features/step_definitions/internationalization_steps.rb
@@ -21,6 +21,15 @@ def language_to_code(name) @@ -21,6 +21,15 @@ def language_to_code(name)
21 language_to_header(name) 21 language_to_header(name)
22 end 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 Given /^a user accessed in (.*) before$/ do |lang| 33 Given /^a user accessed in (.*) before$/ do |lang|
25 session = Webrat::Session.new(Webrat.adapter_class.new(self)) 34 session = Webrat::Session.new(Webrat.adapter_class.new(self))
26 session.extend(Webrat::Matchers) 35 session.extend(Webrat::Matchers)