Skip to content

Commit 26cf9af

Browse files
committed
i18n.enforce_available_locales overrides the I18n configuration
This will make Rails work with i18n 0.6 and 0.7.
1 parent 92168c0 commit 26cf9af

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

activesupport/lib/active_support/i18n_railtie.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,11 @@ def self.initialize_i18n(app)
3636
# Avoid issues with setting the default_locale by disabling available locales
3737
# check while configuring.
3838
enforce_available_locales = app.config.i18n.delete(:enforce_available_locales)
39-
enforce_available_locales = I18n.enforce_available_locales unless I18n.enforce_available_locales.nil?
39+
40+
if enforce_available_locales.nil?
41+
enforce_available_locales = I18n.enforce_available_locales
42+
end
43+
4044
I18n.enforce_available_locales = false
4145

4246
app.config.i18n.each do |setting, value|

railties/test/application/initializers/i18n_test.rb

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,9 @@ class Foo < ActiveRecord::Base
198198
end
199199
end
200200

201-
test "disable config.i18n.enforce_available_locales" do
201+
test "disable config.i18n.enforce_available_locales when initial value is nil" do
202+
I18n.enforce_available_locales = nil
203+
202204
add_to_config <<-RUBY
203205
config.i18n.enforce_available_locales = false
204206
config.i18n.default_locale = :fr
@@ -213,10 +215,28 @@ class Foo < ActiveRecord::Base
213215
end
214216
end
215217

216-
test "default config.i18n.enforce_available_locales does not override I18n.enforce_available_locales" do
218+
test "disable config.i18n.enforce_available_locales when initial value is true" do
219+
I18n.enforce_available_locales = true
220+
221+
add_to_config <<-RUBY
222+
config.i18n.enforce_available_locales = false
223+
config.i18n.default_locale = :fr
224+
RUBY
225+
226+
output = capture(:stderr) { load_app }
227+
assert_no_match %r{deprecated.*enforce_available_locales}, output
228+
assert_equal false, I18n.enforce_available_locales
229+
230+
assert_nothing_raised do
231+
I18n.locale = :es
232+
end
233+
end
234+
235+
test "disable config.i18n.enforce_available_locales when initial value is false" do
217236
I18n.enforce_available_locales = false
218237

219238
add_to_config <<-RUBY
239+
config.i18n.enforce_available_locales = false
220240
config.i18n.default_locale = :fr
221241
RUBY
222242

0 commit comments

Comments
 (0)