diff --git a/app/controllers/application.rb b/app/controllers/application.rb index 1c0cd85..0958f7a 100644 --- a/app/controllers/application.rb +++ b/app/controllers/application.rb @@ -71,7 +71,22 @@ class ApplicationController < ActionController::Base end include GetText - before_init_gettext :maybe_save_locale + before_init_gettext :maybe_save_locale, :default_locale + def maybe_save_locale + if params[:lang] + cookies[:lang] = params[:lang] + end + end + def default_locale + if Noosfero.default_locale + if cookies[:lang].blank? + set_locale Noosfero.default_locale + else + set_locale cookies[:lang] + end + end + end + protected :maybe_save_locale, :default_locale init_gettext 'noosfero' include NeedsProfile @@ -123,12 +138,6 @@ class ApplicationController < ActionController::Base current_user.person if logged_in? end - def maybe_save_locale - if params[:lang] - cookies[:lang] = params[:lang] - end - end - def load_category unless params[:category_path].blank? path = params[:category_path].join('/') diff --git a/app/helpers/language_helper.rb b/app/helpers/language_helper.rb index 7e9fe53..29e69d7 100644 --- a/app/helpers/language_helper.rb +++ b/app/helpers/language_helper.rb @@ -1,10 +1,10 @@ module LanguageHelper def language - if Noosfero.available_locales.include?(GetText.locale.to_s) || - Noosfero.available_locales.include?(GetText.locale.language) - GetText.locale.language + if Noosfero.available_locales.include?(locale.to_s) || + Noosfero.available_locales.include?(locale.language) + locale.language else - Noosfero.default_locale + Noosfero.default_locale || 'en' end end diff --git a/config/environment.rb b/config/environment.rb index 2359255..217ab1e 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -119,7 +119,7 @@ Noosfero.locales = { 'hy' => 'հայերեն լեզու', } # if you want to override this, do it in config/local.rb ! -Noosfero.default_locale = 'en' +Noosfero.default_locale = nil Tag.hierarchical = true diff --git a/features/internationalization.feature b/features/internationalization.feature index 34f9659..0d4cf07 100644 --- a/features/internationalization.feature +++ b/features/internationalization.feature @@ -7,6 +7,12 @@ Feature: internationalization When I go to the homepage Then the site should be in English + @default_locale_config + Scenario: different default locale configured locally + Given Noosfero is configured to use Portuguese as default + When I go to the homepage + Then the site should be in Portuguese + Scenario: detecting language from browser Given my browser prefers Portuguese When I go to the homepage diff --git a/features/step_definitions/internationalization_steps.rb b/features/step_definitions/internationalization_steps.rb index 5f66230..e133394 100644 --- a/features/step_definitions/internationalization_steps.rb +++ b/features/step_definitions/internationalization_steps.rb @@ -21,6 +21,15 @@ def language_to_code(name) language_to_header(name) end +Given /^Noosfero is configured to use (.+) as default$/ do |lang| + Noosfero.default_locale = language_to_code(lang) +end + +After('@default_locale_config') do + Noosfero.default_locale = nil + GetText.locale = nil +end + Given /^a user accessed in (.*) before$/ do |lang| session = Webrat::Session.new(Webrat.adapter_class.new(self)) session.extend(Webrat::Matchers) -- libgit2 0.21.2