Commit 6ae357043b91f48a1eca88e1a4edac63b88b4daf

Authored by Antonio Terceiro
1 parent 28b264c7

ActionItem830: forcing single-supported locale

app/controllers/application.rb
@@ -62,6 +62,9 @@ class ApplicationController < ActionController::Base @@ -62,6 +62,9 @@ class ApplicationController < ActionController::Base
62 62
63 before_init_gettext :maybe_save_locale 63 before_init_gettext :maybe_save_locale
64 after_init_gettext :check_locale 64 after_init_gettext :check_locale
  65 + if Noosfero.available_locales.size == 1
  66 + GetText.locale = Noosfero.available_locales.first
  67 + end
65 init_gettext 'noosfero' 68 init_gettext 'noosfero'
66 69
67 include NeedsProfile 70 include NeedsProfile
@@ -117,16 +120,19 @@ class ApplicationController < ActionController::Base @@ -117,16 +120,19 @@ class ApplicationController < ActionController::Base
117 end 120 end
118 121
119 def maybe_save_locale 122 def maybe_save_locale
120 - # save locale if forced  
121 - if params[:lang]  
122 - cookies[:lang] = params[:lang] 123 + if Noosfero.available_locales.size > 1
  124 + # save locale if forced
  125 + if params[:lang]
  126 + cookies[:lang] = params[:lang]
  127 + end
  128 + # force GetText to load a matching locale
  129 + GetText.locale = nil
123 end 130 end
124 - # force GetText to load a matching locale  
125 - GetText.locale = nil  
126 end 131 end
127 132
128 def check_locale 133 def check_locale
129 available_locales = Noosfero.available_locales 134 available_locales = Noosfero.available_locales
  135 + return if available_locales.size == 1
130 136
131 # do not accept unsupported locales 137 # do not accept unsupported locales
132 if !available_locales.include?(locale.to_s) 138 if !available_locales.include?(locale.to_s)
lib/noosfero.rb
@@ -13,7 +13,7 @@ module Noosfero @@ -13,7 +13,7 @@ module Noosfero
13 attr_accessor :locales 13 attr_accessor :locales
14 attr_accessor :default_locale 14 attr_accessor :default_locale
15 def available_locales 15 def available_locales
16 - Dir.glob(File.join(RAILS_ROOT, 'locale', '*')).map { |f| File.basename(f) }.select {|item| locales.include?(item) } 16 + @available_locales ||= (Dir.glob(File.join(RAILS_ROOT, 'locale', '*')).map { |f| File.basename(f) }.select {|item| locales.include?(item) })
17 end 17 end
18 end 18 end
19 19
test/integration/locale_setting_test.rb
@@ -6,7 +6,7 @@ class LocaleSettingTest < ActionController::IntegrationTest @@ -6,7 +6,7 @@ class LocaleSettingTest < ActionController::IntegrationTest
6 # reset GetText before every test 6 # reset GetText before every test
7 GetText.locale = nil 7 GetText.locale = nil
8 Noosfero.stubs(:default_locale).returns('en') 8 Noosfero.stubs(:default_locale).returns('en')
9 - Noosfero.stubs(:available_locales).returns(['pt_BR']) 9 + Noosfero.stubs(:available_locales).returns(['pt_BR', 'ja_JP'])
10 end 10 end
11 11
12 should 'be able to set a default language' do 12 should 'be able to set a default language' do