Commit 756e91dee4528a46f750e24877cc399715fe39ed
1 parent
242b7431
Exists in
master
and in
23 other branches
ActionItem137: adjustements in language choosing scheme
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1300 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
3 changed files
with
28 additions
and
14 deletions
Show diff stats
app/controllers/application.rb
| @@ -26,7 +26,7 @@ class ApplicationController < ActionController::Base | @@ -26,7 +26,7 @@ class ApplicationController < ActionController::Base | ||
| 26 | include PermissionCheck | 26 | include PermissionCheck |
| 27 | 27 | ||
| 28 | init_gettext 'noosfero' | 28 | init_gettext 'noosfero' |
| 29 | - before_init_gettext :set_locale | 29 | + before_init_gettext :force_language |
| 30 | 30 | ||
| 31 | include NeedsProfile | 31 | include NeedsProfile |
| 32 | 32 | ||
| @@ -62,15 +62,11 @@ class ApplicationController < ActionController::Base | @@ -62,15 +62,11 @@ class ApplicationController < ActionController::Base | ||
| 62 | current_user.person if logged_in? | 62 | current_user.person if logged_in? |
| 63 | end | 63 | end |
| 64 | 64 | ||
| 65 | - def set_locale | ||
| 66 | - locale = cookies[:locale] | ||
| 67 | - unless params[:locale].blank? | ||
| 68 | - locale = params[:locale] | ||
| 69 | - end | ||
| 70 | - | ||
| 71 | - if locale | ||
| 72 | - cookies[:locale] = locale | ||
| 73 | - GetText.locale = locale | 65 | + def force_language |
| 66 | + lang = params[:lang] | ||
| 67 | + unless lang.blank? | ||
| 68 | + cookies[:lang] = lang | ||
| 69 | + GetText.locale = lang | ||
| 74 | end | 70 | end |
| 75 | end | 71 | end |
| 76 | 72 |
app/views/shared/language_chooser.rhtml
| @@ -2,6 +2,6 @@ | @@ -2,6 +2,6 @@ | ||
| 2 | <% if GetText.locale.to_s == locale_code %> | 2 | <% if GetText.locale.to_s == locale_code %> |
| 3 | <strong><%= locale_name %></strong> | 3 | <strong><%= locale_name %></strong> |
| 4 | <% else %> | 4 | <% else %> |
| 5 | - <%= link_to locale_name, { :locale => locale_code }%> | 5 | + <%= link_to locale_name, { :lang => locale_code }%> |
| 6 | <% end %> | 6 | <% end %> |
| 7 | <% end %> | 7 | <% end %> |
test/integration/locale_setting_test.rb
| @@ -2,10 +2,27 @@ require "#{File.dirname(__FILE__)}/../test_helper" | @@ -2,10 +2,27 @@ require "#{File.dirname(__FILE__)}/../test_helper" | ||
| 2 | 2 | ||
| 3 | class LocaleSettingTest < ActionController::IntegrationTest | 3 | class LocaleSettingTest < ActionController::IntegrationTest |
| 4 | 4 | ||
| 5 | - should 'set locale properly' do | 5 | + def setup |
| 6 | + # reset GetText before every test | ||
| 7 | + GetText.locale = nil | ||
| 8 | + end | ||
| 9 | + | ||
| 10 | + should 'detect locale from the browser' do | ||
| 11 | + | ||
| 12 | + # user has pt_BR | ||
| 13 | + get '/', { }, { 'HTTP_ACCEPT_LANGUAGE' => 'pt-br, en' } | ||
| 14 | + assert_equal 'pt_BR', GetText.locale.to_s | ||
| 15 | + | ||
| 16 | + # user now wants en | ||
| 17 | + get '/', { }, { 'HTTP_ACCEPT_LANGUAGE' => 'en' } | ||
| 18 | + assert_equal 'en', GetText.locale.to_s | ||
| 19 | + | ||
| 20 | + end | ||
| 21 | + | ||
| 22 | + should 'be able to force locale' do | ||
| 6 | 23 | ||
| 7 | # set locale to pt_BR | 24 | # set locale to pt_BR |
| 8 | - get '/', :locale => 'pt_BR' | 25 | + get '/', :lang => 'pt_BR' |
| 9 | assert_equal 'pt_BR', GetText.locale.to_s | 26 | assert_equal 'pt_BR', GetText.locale.to_s |
| 10 | 27 | ||
| 11 | # locale is kept | 28 | # locale is kept |
| @@ -13,7 +30,7 @@ class LocaleSettingTest < ActionController::IntegrationTest | @@ -13,7 +30,7 @@ class LocaleSettingTest < ActionController::IntegrationTest | ||
| 13 | assert_equal 'pt_BR', GetText.locale.to_s | 30 | assert_equal 'pt_BR', GetText.locale.to_s |
| 14 | 31 | ||
| 15 | # changing back | 32 | # changing back |
| 16 | - get '/', :locale => 'en' | 33 | + get '/', :lang => 'en' |
| 17 | assert_equal 'en', GetText.locale.to_s | 34 | assert_equal 'en', GetText.locale.to_s |
| 18 | 35 | ||
| 19 | # locale is kept again | 36 | # locale is kept again |
| @@ -23,4 +40,5 @@ class LocaleSettingTest < ActionController::IntegrationTest | @@ -23,4 +40,5 @@ class LocaleSettingTest < ActionController::IntegrationTest | ||
| 23 | end | 40 | end |
| 24 | 41 | ||
| 25 | 42 | ||
| 43 | + | ||
| 26 | end | 44 | end |