rails_locale_detection 1.3.2 → 2.0.0.pre2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +50 -0
- data/Gemfile +2 -14
- data/Gemfile.lock +70 -26
- data/LICENSE +21 -0
- data/README.md +26 -20
- data/Rakefile +3 -46
- data/lib/rails_locale_detection.rb +32 -3
- data/lib/rails_locale_detection/controller_methods.rb +20 -0
- data/lib/rails_locale_detection/detection_methods.rb +45 -0
- data/lib/rails_locale_detection/locale_accessors.rb +23 -0
- data/lib/rails_locale_detection/locale_detector.rb +22 -0
- data/lib/rails_locale_detection/railtie.rb +13 -0
- data/lib/rails_locale_detection/version.rb +3 -0
- data/rails_locale_detection.gemspec +26 -71
- data/spec/controllers/callback_tests_controller_spec.rb +15 -0
- data/spec/rails_locale_detection/config_spec.rb +17 -0
- data/spec/rails_locale_detection/controller_methods_spec.rb +19 -0
- data/spec/rails_locale_detection/locale_accessors_spec.rb +30 -0
- data/spec/{rails_locale_detection_spec.rb → rails_locale_detection/locale_detector_spec.rb} +141 -144
- data/spec/spec_helper.rb +7 -12
- data/spec/support/{mock.rb → mocks.rb} +41 -14
- data/spec/support/rails.rb +30 -0
- metadata +63 -49
- data/LICENSE.txt +0 -20
- data/VERSION +0 -1
- data/lib/rails/locale_detection.rb +0 -74
@@ -0,0 +1,23 @@
|
|
1
|
+
module RailsLocaleDetection
|
2
|
+
module LocaleAccessors
|
3
|
+
def alternate_locales
|
4
|
+
available_locales - [current_locale]
|
5
|
+
end
|
6
|
+
|
7
|
+
def available_locales
|
8
|
+
I18n.available_locales
|
9
|
+
end
|
10
|
+
|
11
|
+
def current_locale
|
12
|
+
I18n.locale
|
13
|
+
end
|
14
|
+
|
15
|
+
def current_locale=(locale)
|
16
|
+
I18n.locale = locale
|
17
|
+
end
|
18
|
+
|
19
|
+
def default_locale
|
20
|
+
I18n.default_locale
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module RailsLocaleDetection
|
2
|
+
class LocaleDetector
|
3
|
+
include DetectionMethods
|
4
|
+
include LocaleAccessors
|
5
|
+
|
6
|
+
attr_reader :controller
|
7
|
+
|
8
|
+
delegate :cookies, :params, :request, :default_url_options, :user_locale, :to => :controller
|
9
|
+
|
10
|
+
def initialize(controller = nil)
|
11
|
+
@controller = controller
|
12
|
+
end
|
13
|
+
|
14
|
+
def locale_key
|
15
|
+
RailsLocaleDetection.locale_key
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.before(controller)
|
19
|
+
new(controller).set_locale
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module RailsLocaleDetection
|
2
|
+
class Railtie < Rails::Railtie
|
3
|
+
initializer "rails_locale_detection.append_before_filter" do
|
4
|
+
ActiveSupport.on_load(:action_controller) do
|
5
|
+
ActionController::Base.send :include, RailsLocaleDetection::ControllerMethods
|
6
|
+
end
|
7
|
+
|
8
|
+
ActiveSupport.on_load(:action_view) do
|
9
|
+
ActionView::Base.send :include, Rails::LocaleDetection::LocaleAccessors
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,74 +1,29 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
# encoding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'rails_locale_detection/version'
|
5
5
|
|
6
|
-
Gem::Specification.new do |
|
7
|
-
|
8
|
-
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "rails_locale_detection"
|
8
|
+
gem.version = RailsLocaleDetection::VERSION
|
9
|
+
gem.authors = ["Mateo Murphy"]
|
10
|
+
gem.email = ["mateo.murphy@gmail.com"]
|
11
|
+
gem.description = "Sets the current locale of a request using a combination of params, cookies, and http headers"
|
12
|
+
gem.summary = "Locale setting for rails project"
|
13
|
+
gem.homepage = "https://github.com/mateomurphy/rails_locale_detection"
|
9
14
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
"LICENSE.txt",
|
25
|
-
"README.md",
|
26
|
-
"Rakefile",
|
27
|
-
"VERSION",
|
28
|
-
"lib/rails/locale_detection.rb",
|
29
|
-
"lib/rails_locale_detection.rb",
|
30
|
-
"rails_locale_detection.gemspec",
|
31
|
-
"spec/rails_locale_detection_spec.rb",
|
32
|
-
"spec/spec_helper.rb",
|
33
|
-
"spec/support/mock.rb"
|
34
|
-
]
|
35
|
-
s.homepage = "http://github.com/mateomurphy/rails_locale_detection"
|
36
|
-
s.licenses = ["MIT"]
|
37
|
-
s.require_paths = ["lib"]
|
38
|
-
s.rubygems_version = "1.8.25"
|
39
|
-
s.summary = "locale setting for rails project"
|
40
|
-
|
41
|
-
if s.respond_to? :specification_version then
|
42
|
-
s.specification_version = 3
|
43
|
-
|
44
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
45
|
-
s.add_runtime_dependency(%q<activesupport>, ["~> 3.2.13"])
|
46
|
-
s.add_runtime_dependency(%q<http_accept_language>, [">= 0"])
|
47
|
-
s.add_development_dependency(%q<i18n>, [">= 0"])
|
48
|
-
s.add_development_dependency(%q<timecop>, [">= 0"])
|
49
|
-
s.add_development_dependency(%q<actionpack>, ["~> 3.2.13"])
|
50
|
-
s.add_development_dependency(%q<rspec>, ["~> 2.12.0"])
|
51
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.3.4"])
|
52
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
53
|
-
else
|
54
|
-
s.add_dependency(%q<activesupport>, ["~> 3.2.13"])
|
55
|
-
s.add_dependency(%q<http_accept_language>, [">= 0"])
|
56
|
-
s.add_dependency(%q<i18n>, [">= 0"])
|
57
|
-
s.add_dependency(%q<timecop>, [">= 0"])
|
58
|
-
s.add_dependency(%q<actionpack>, ["~> 3.2.13"])
|
59
|
-
s.add_dependency(%q<rspec>, ["~> 2.12.0"])
|
60
|
-
s.add_dependency(%q<bundler>, ["~> 1.3.4"])
|
61
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
62
|
-
end
|
63
|
-
else
|
64
|
-
s.add_dependency(%q<activesupport>, ["~> 3.2.13"])
|
65
|
-
s.add_dependency(%q<http_accept_language>, [">= 0"])
|
66
|
-
s.add_dependency(%q<i18n>, [">= 0"])
|
67
|
-
s.add_dependency(%q<timecop>, [">= 0"])
|
68
|
-
s.add_dependency(%q<actionpack>, ["~> 3.2.13"])
|
69
|
-
s.add_dependency(%q<rspec>, ["~> 2.12.0"])
|
70
|
-
s.add_dependency(%q<bundler>, ["~> 1.3.4"])
|
71
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
72
|
-
end
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ['lib']
|
19
|
+
|
20
|
+
gem.add_dependency('rails', '>= 3.2.13')
|
21
|
+
gem.add_dependency('http_accept_language', '~> 1.0.2')
|
22
|
+
|
23
|
+
gem.add_development_dependency('i18n', '~> 0.6.1')
|
24
|
+
gem.add_development_dependency('timecop', '~> 0.6.1')
|
25
|
+
gem.add_development_dependency('rspec-rails', '~> 2.13.0')
|
26
|
+
gem.add_development_dependency('bundler', '~> 1.3.4')
|
27
|
+
gem.add_development_dependency('gem-release', '~> 0.5.3')
|
28
|
+
gem.add_development_dependency('rake', '~> 10.0.4')
|
73
29
|
end
|
74
|
-
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CallbackTestsController do
|
4
|
+
|
5
|
+
it "should automatically include the callback" do
|
6
|
+
subject.class.ancestors.should include(RailsLocaleDetection::ControllerMethods)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should correctly detect the user locale" do
|
10
|
+
get :show
|
11
|
+
|
12
|
+
response.body.should eq('fr')
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RailsLocaleDetection do
|
4
|
+
describe 'backwards compatility' do
|
5
|
+
it 'should be possible to configure using the previous module name' do
|
6
|
+
Rails::LocaleDetection.should respond_to(:config)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '.locale_expiry' do
|
11
|
+
it "is set to 3 months by default" do
|
12
|
+
RailsLocaleDetection.config do |c|
|
13
|
+
c.locale_expiry.should eq(3.months)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RailsLocaleDetection::ControllerMethods do
|
4
|
+
let(:request) { MockRequest.new }
|
5
|
+
subject(:controller) { MockController.new(request) }
|
6
|
+
|
7
|
+
it 'provides a blank user locale method' do
|
8
|
+
controller.user_locale.should be_nil
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should provide a detect locale method' do
|
12
|
+
controller.class.should respond_to(:detect_locale)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should add a before filter' do
|
16
|
+
controller.class.before_filters.should eq([[RailsLocaleDetection::LocaleDetector]])
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class AccessorTest
|
4
|
+
include RailsLocaleDetection::LocaleAccessors
|
5
|
+
end
|
6
|
+
|
7
|
+
describe RailsLocaleDetection::LocaleAccessors do
|
8
|
+
subject :object do
|
9
|
+
AccessorTest.new
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#alternate_locales' do
|
13
|
+
it "returns all available locales minus the current one" do
|
14
|
+
object.current_locale = :en
|
15
|
+
object.alternate_locales.should eq([:fr])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#available_locales' do
|
20
|
+
it "shadows I18n.available_locales" do
|
21
|
+
object.available_locales.should eq([:en, :fr])
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#default_locale' do
|
26
|
+
it "shadows I18n.default locale" do
|
27
|
+
object.default_locale.should eq(:en)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,331 +1,328 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
I18n.available_locales = [:en, :fr]
|
5
|
-
Timecop.freeze
|
6
|
-
|
7
|
-
describe Rails::LocaleDetection do
|
3
|
+
describe RailsLocaleDetection::LocaleDetector do
|
8
4
|
let(:request) { MockRequest.new }
|
9
5
|
let(:controller) { MockController.new(request) }
|
10
|
-
|
11
|
-
|
12
|
-
it "is set to 3 months by default" do
|
13
|
-
Rails::LocaleDetection.config do |c|
|
14
|
-
c.locale_expiry.should eq(3.months)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
6
|
+
subject(:locale_detector) { RailsLocaleDetection::LocaleDetector.new(controller) }
|
7
|
+
|
19
8
|
describe '#available_locales' do
|
20
9
|
it "shadows I18n.available_locales" do
|
21
|
-
|
10
|
+
locale_detector.available_locales.should eq([:en, :fr])
|
22
11
|
end
|
23
12
|
end
|
24
|
-
|
13
|
+
|
25
14
|
describe '#default_locale' do
|
26
15
|
it "shadows I18n.default locale" do
|
27
|
-
|
16
|
+
locale_detector.default_locale.should eq(:en)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#current_locale' do
|
21
|
+
it "shadows I18n.locale" do
|
22
|
+
controller.params[:locale] = 'fr'
|
23
|
+
locale_detector.set_locale
|
24
|
+
controller.current_locale.should eq(:fr)
|
28
25
|
end
|
29
26
|
end
|
30
|
-
|
27
|
+
|
31
28
|
describe '#validate_locale' do
|
32
29
|
it "returns the passed locale if it's valid" do
|
33
|
-
|
30
|
+
locale_detector.validate_locale(:en).should eq(:en)
|
34
31
|
end
|
35
|
-
|
32
|
+
|
36
33
|
it "returns nil if the passed locale isn't valid" do
|
37
|
-
|
34
|
+
locale_detector.validate_locale(:es).should be_nil
|
38
35
|
end
|
39
|
-
|
36
|
+
|
40
37
|
it "returns nil if nil is passed" do
|
41
|
-
|
38
|
+
locale_detector.validate_locale(nil).should be_nil
|
42
39
|
end
|
43
40
|
end
|
44
|
-
|
41
|
+
|
45
42
|
describe '#locale_from_param' do
|
46
43
|
it "returns en if the param set was valid" do
|
47
44
|
controller.params[:locale] = 'en'
|
48
|
-
|
45
|
+
locale_detector.locale_from_param.should eq(:en)
|
49
46
|
end
|
50
|
-
|
47
|
+
|
51
48
|
it "returns nil if the param set was not" do
|
52
49
|
controller.params[:locale] = 'es'
|
53
|
-
|
50
|
+
locale_detector.locale_from_param.should be_nil
|
54
51
|
end
|
55
52
|
|
56
53
|
it "returns nil if not locale was set" do
|
57
|
-
|
54
|
+
locale_detector.locale_from_param.should be_nil
|
58
55
|
end
|
59
56
|
end
|
60
|
-
|
57
|
+
|
61
58
|
describe '#locale_from_cookie' do
|
62
59
|
it "returns en if the param set was valid" do
|
63
60
|
controller.cookies[:locale] = 'en'
|
64
|
-
|
61
|
+
locale_detector.locale_from_cookie.should eq(:en)
|
65
62
|
end
|
66
|
-
|
63
|
+
|
67
64
|
it "returns nil if the param set was not" do
|
68
65
|
controller.cookies[:locale] = 'es'
|
69
|
-
|
66
|
+
locale_detector.locale_from_cookie.should be_nil
|
70
67
|
end
|
71
68
|
|
72
69
|
it "returns nil if not locale was set" do
|
73
|
-
|
70
|
+
locale_detector.locale_from_cookie.should be_nil
|
74
71
|
end
|
75
|
-
end
|
76
|
-
|
72
|
+
end
|
73
|
+
|
77
74
|
describe '#locale_from_request' do
|
78
75
|
it "returns en if the param set was valid" do
|
79
76
|
request.env['HTTP_ACCEPT_LANGUAGE'] = 'en-us,en-gb;q=0.8,en;q=0.6'
|
80
|
-
|
77
|
+
locale_detector.locale_from_request.should eq(:en)
|
81
78
|
end
|
82
|
-
|
79
|
+
|
83
80
|
it "returns nil if the param set was not" do
|
84
81
|
request.env['HTTP_ACCEPT_LANGUAGE'] = 'es'
|
85
|
-
|
82
|
+
locale_detector.locale_from_request.should be_nil
|
86
83
|
end
|
87
84
|
|
88
85
|
it "returns nil if not locale was set" do
|
89
|
-
|
86
|
+
locale_detector.locale_from_request.should be_nil
|
90
87
|
end
|
91
88
|
end
|
92
|
-
|
89
|
+
|
93
90
|
describe '#locale_from_user' do
|
94
91
|
it "returns the locale of the user if it's valid" do
|
95
92
|
controller.user = MockUser.new(:en)
|
96
|
-
|
93
|
+
locale_detector.locale_from_user.should eq(:en)
|
97
94
|
end
|
98
|
-
|
95
|
+
|
99
96
|
it "returns nil if the locale of the use isn't valid" do
|
100
97
|
controller.user = MockUser.new(:es)
|
101
|
-
|
98
|
+
locale_detector.locale_from_user.should be_nil
|
102
99
|
end
|
103
100
|
end
|
104
|
-
|
101
|
+
|
105
102
|
describe '#locale_from' do
|
106
|
-
before :
|
107
|
-
controller.params[:locale] = 'en'
|
103
|
+
before :each do
|
104
|
+
controller.params[:locale] = 'en'
|
108
105
|
controller.cookies[:locale] = 'fr'
|
109
106
|
end
|
110
|
-
|
107
|
+
|
111
108
|
it "returns the locale set in the param" do
|
112
|
-
|
109
|
+
locale_detector.locale_from(:param).should eq(:en)
|
113
110
|
end
|
114
|
-
|
111
|
+
|
115
112
|
it "return the locale set in the cookie" do
|
116
|
-
|
113
|
+
locale_detector.locale_from(:cookie).should eq(:fr)
|
117
114
|
end
|
118
115
|
end
|
119
|
-
|
120
|
-
describe '#
|
116
|
+
|
117
|
+
describe '#detect_locale' do
|
121
118
|
context "with default detection order" do
|
122
|
-
before :
|
123
|
-
|
124
|
-
end
|
125
|
-
|
119
|
+
before :each do
|
120
|
+
RailsLocaleDetection.detection_order = [:user, :param, :cookie, :request]
|
121
|
+
end
|
122
|
+
|
126
123
|
it "returns default if nothing is set" do
|
127
|
-
|
124
|
+
locale_detector.detect_locale.should eq(:en)
|
128
125
|
end
|
129
126
|
|
130
127
|
it "returns en if the params is set to en" do
|
131
128
|
controller.params[:locale] = "en"
|
132
|
-
|
129
|
+
locale_detector.detect_locale.should eq(:en)
|
133
130
|
end
|
134
131
|
|
135
132
|
it "returns fr if the cookie is set to fr" do
|
136
133
|
controller.cookies[:locale] = "fr"
|
137
|
-
|
134
|
+
locale_detector.detect_locale.should eq(:fr)
|
138
135
|
end
|
139
136
|
|
140
137
|
it "returns en if the request is set to en" do
|
141
138
|
request.env['HTTP_ACCEPT_LANGUAGE'] = 'en-us,en-gb;q=0.8,en;q=0.6'
|
142
|
-
|
139
|
+
locale_detector.detect_locale.should eq(:en)
|
143
140
|
end
|
144
|
-
|
141
|
+
|
145
142
|
it "return fr if the user locale was set to fr" do
|
146
143
|
controller.user = MockUser.new(:en)
|
147
|
-
|
144
|
+
locale_detector.detect_locale.should eq(:en)
|
148
145
|
end
|
149
|
-
|
146
|
+
|
150
147
|
end
|
151
|
-
|
148
|
+
|
152
149
|
context "with a custom detection order" do
|
153
|
-
before :
|
154
|
-
|
150
|
+
before :each do
|
151
|
+
RailsLocaleDetection.detection_order = [:user, :param, :request]
|
155
152
|
end
|
156
|
-
|
153
|
+
|
157
154
|
it "returns return default if nothing is set" do
|
158
|
-
|
155
|
+
locale_detector.detect_locale.should eq(:en)
|
159
156
|
end
|
160
157
|
|
161
158
|
it "returns en if the params is set to en" do
|
162
159
|
controller.params[:locale] = "en"
|
163
|
-
|
160
|
+
locale_detector.detect_locale.should eq(:en)
|
164
161
|
end
|
165
162
|
|
166
163
|
it "skips cookie" do
|
167
164
|
controller.cookies[:locale] = "fr"
|
168
|
-
|
165
|
+
locale_detector.detect_locale.should eq(:en)
|
169
166
|
end
|
170
167
|
|
171
168
|
it "returns en if the request is set to en" do
|
172
169
|
request.env['HTTP_ACCEPT_LANGUAGE'] = 'en-us,en-gb;q=0.8,en;q=0.6'
|
173
|
-
|
174
|
-
end
|
175
|
-
|
170
|
+
locale_detector.detect_locale.should eq(:en)
|
171
|
+
end
|
172
|
+
|
176
173
|
end
|
177
|
-
|
174
|
+
|
178
175
|
end
|
179
176
|
|
180
177
|
describe '#set_default_url_option_for_request?' do
|
181
178
|
context 'with a locale param' do
|
182
|
-
before :
|
183
|
-
controller.params[:locale] = "fr"
|
179
|
+
before :each do
|
180
|
+
controller.params[:locale] = "fr"
|
184
181
|
end
|
185
|
-
|
182
|
+
|
186
183
|
it 'return true when set_default_url_option is true' do
|
187
|
-
|
188
|
-
|
184
|
+
RailsLocaleDetection.set_default_url_option = true
|
185
|
+
locale_detector.should be_set_default_url_option_for_request
|
189
186
|
end
|
190
|
-
|
187
|
+
|
191
188
|
it 'return false when set_default_url_option is fale' do
|
192
|
-
|
193
|
-
|
189
|
+
RailsLocaleDetection.set_default_url_option = false
|
190
|
+
locale_detector.should_not be_set_default_url_option_for_request
|
194
191
|
end
|
195
|
-
|
192
|
+
|
196
193
|
it 'return false when set_default_url_option is :never' do
|
197
|
-
|
198
|
-
|
194
|
+
RailsLocaleDetection.set_default_url_option = :never
|
195
|
+
locale_detector.should_not be_set_default_url_option_for_request
|
199
196
|
end
|
200
|
-
|
197
|
+
|
201
198
|
it 'return true when set_default_url_option is :always' do
|
202
|
-
|
203
|
-
|
199
|
+
RailsLocaleDetection.set_default_url_option = :always
|
200
|
+
locale_detector.should be_set_default_url_option_for_request
|
204
201
|
end
|
205
|
-
|
202
|
+
|
206
203
|
it 'return true when set_default_url_option is :explicitly' do
|
207
|
-
|
208
|
-
|
209
|
-
end
|
204
|
+
RailsLocaleDetection.set_default_url_option = :explicitly
|
205
|
+
locale_detector.should be_set_default_url_option_for_request
|
206
|
+
end
|
210
207
|
end
|
211
|
-
|
208
|
+
|
212
209
|
context 'without a locale param' do
|
213
|
-
before :
|
210
|
+
before :each do
|
214
211
|
controller.params[:locale] = nil
|
215
|
-
end
|
216
|
-
|
212
|
+
end
|
213
|
+
|
217
214
|
it 'return true when set_default_url_option is true' do
|
218
|
-
|
219
|
-
|
215
|
+
RailsLocaleDetection.set_default_url_option = true
|
216
|
+
locale_detector.should be_set_default_url_option_for_request
|
220
217
|
end
|
221
|
-
|
218
|
+
|
222
219
|
it 'return false when set_default_url_option is false' do
|
223
|
-
|
224
|
-
|
220
|
+
RailsLocaleDetection.set_default_url_option = false
|
221
|
+
locale_detector.should_not be_set_default_url_option_for_request
|
225
222
|
end
|
226
|
-
|
223
|
+
|
227
224
|
it 'return false when set_default_url_option is :never' do
|
228
|
-
|
229
|
-
|
225
|
+
RailsLocaleDetection.set_default_url_option = :never
|
226
|
+
locale_detector.should_not be_set_default_url_option_for_request
|
230
227
|
end
|
231
|
-
|
228
|
+
|
232
229
|
it 'return true when set_default_url_option is :always' do
|
233
|
-
|
234
|
-
|
230
|
+
RailsLocaleDetection.set_default_url_option = :always
|
231
|
+
locale_detector.should be_set_default_url_option_for_request
|
235
232
|
end
|
236
|
-
|
233
|
+
|
237
234
|
it 'return false when set_default_url_option is :explicitly' do
|
238
|
-
|
239
|
-
|
240
|
-
end
|
235
|
+
RailsLocaleDetection.set_default_url_option = :explicitly
|
236
|
+
locale_detector.should_not be_set_default_url_option_for_request
|
237
|
+
end
|
241
238
|
end
|
242
|
-
|
239
|
+
|
243
240
|
end
|
244
241
|
|
245
242
|
describe '#set_locale' do
|
246
243
|
context "with set default_url_option :always" do
|
247
|
-
before :
|
248
|
-
|
244
|
+
before :each do
|
245
|
+
RailsLocaleDetection.set_default_url_option = :always
|
249
246
|
controller.params[:locale] = "fr"
|
250
|
-
|
247
|
+
locale_detector.set_locale
|
251
248
|
end
|
252
|
-
|
249
|
+
|
253
250
|
it "sets the current locale to the locale param" do
|
254
251
|
I18n.locale.should eq(:fr)
|
255
252
|
end
|
256
|
-
|
253
|
+
|
257
254
|
it "sets the language" do
|
258
255
|
controller.cookies[:locale].should eq(:fr)
|
259
256
|
end
|
260
|
-
|
257
|
+
|
261
258
|
it "sets the default_url_options" do
|
262
259
|
controller.default_url_options[:locale].to_s.should eq('fr')
|
263
260
|
end
|
264
261
|
end
|
265
|
-
|
262
|
+
|
266
263
|
context "with set default_url_option :never" do
|
267
|
-
before :
|
268
|
-
|
264
|
+
before :each do
|
265
|
+
RailsLocaleDetection.set_default_url_option = :never
|
269
266
|
controller.default_url_options = {}
|
270
267
|
controller.params[:locale] = "fr"
|
271
|
-
|
268
|
+
locale_detector.set_locale
|
272
269
|
end
|
273
|
-
|
270
|
+
|
274
271
|
it "sets the current locale to the locale param" do
|
275
272
|
I18n.locale.should eq(:fr)
|
276
273
|
end
|
277
|
-
|
274
|
+
|
278
275
|
it "sets the cookier locale" do
|
279
276
|
controller.cookies[:locale].should eq(:fr)
|
280
277
|
end
|
281
|
-
|
278
|
+
|
282
279
|
it "doesn't set the default_url_options" do
|
283
280
|
controller.default_url_options[:locale].should be_nil
|
284
281
|
end
|
285
|
-
end
|
286
|
-
|
282
|
+
end
|
283
|
+
|
287
284
|
context "with set default_url_option :explicit and no locale param" do
|
288
|
-
before :
|
289
|
-
|
285
|
+
before :each do
|
286
|
+
RailsLocaleDetection.set_default_url_option = :explicitly
|
290
287
|
controller.default_url_options = {}
|
291
288
|
controller.params[:locale] = nil
|
292
|
-
|
289
|
+
locale_detector.set_locale
|
293
290
|
end
|
294
|
-
|
291
|
+
|
295
292
|
it "sets the current locale to the default param" do
|
296
293
|
I18n.locale.should eq(:en)
|
297
294
|
end
|
298
|
-
|
295
|
+
|
299
296
|
it "sets the cookie locale" do
|
300
297
|
controller.cookies[:locale].should eq(:en)
|
301
298
|
end
|
302
|
-
|
299
|
+
|
303
300
|
it "doesn't set the default_url_options" do
|
304
301
|
controller.default_url_options[:locale].should be_nil
|
305
302
|
end
|
306
|
-
end
|
307
|
-
|
303
|
+
end
|
304
|
+
|
308
305
|
context "with set default_url_option :explicit and a locale param" do
|
309
|
-
before :
|
310
|
-
|
306
|
+
before :each do
|
307
|
+
RailsLocaleDetection.set_default_url_option = :explicitly
|
311
308
|
controller.default_url_options = {}
|
312
309
|
controller.params[:locale] = :fr
|
313
|
-
|
310
|
+
locale_detector.set_locale
|
314
311
|
end
|
315
|
-
|
312
|
+
|
316
313
|
it "sets the current locale to the default param" do
|
317
314
|
I18n.locale.should eq(:fr)
|
318
315
|
end
|
319
|
-
|
316
|
+
|
320
317
|
it "sets the cookie locale" do
|
321
318
|
controller.cookies[:locale].should eq(:fr)
|
322
319
|
end
|
323
|
-
|
320
|
+
|
324
321
|
it "doesn't set the default_url_options" do
|
325
322
|
controller.default_url_options[:locale].should eq(:fr)
|
326
323
|
end
|
327
|
-
end
|
328
|
-
|
324
|
+
end
|
325
|
+
|
329
326
|
end
|
330
327
|
|
331
328
|
end
|