Skip to content

Commit 29fe565

Browse files
authored
Merge pull request #408 from wjordan/enforce_available_locales_false_fix
store translations for unavailable locales if enforce_available_locales is false
2 parents 888abcb + 596a71d commit 29fe565

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

lib/i18n/backend/simple.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ def initialized?
2929
# translations will be overwritten by new ones only at the deepest
3030
# level of the hash.
3131
def store_translations(locale, data, options = {})
32-
if I18n.available_locales_initialized? &&
32+
if I18n.enforce_available_locales &&
33+
I18n.available_locales_initialized? &&
3334
!I18n.available_locales.include?(locale.to_sym) &&
3435
!I18n.available_locales.include?(locale.to_s)
3536
return data

test/backend/simple_test.rb

+15-4
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,23 @@ def setup
7070
assert_equal Hash[:'en', {:foo => {:bar => 'bar', :baz => 'baz'}}], translations
7171
end
7272

73-
test "simple store_translations: do not store translations for locales not explicitly marked as available" do
73+
test "simple store_translations: do not store translations unavailable locales if enforce_available_locales is true" do
74+
begin
75+
I18n.enforce_available_locales = true
76+
I18n.available_locales = [:en, :es]
77+
store_translations(:fr, :foo => {:bar => 'barfr', :baz => 'bazfr'})
78+
store_translations(:es, :foo => {:bar => 'bares', :baz => 'bazes'})
79+
assert_nil translations[:fr]
80+
assert_equal Hash[:foo, {:bar => 'bares', :baz => 'bazes'}], translations[:es]
81+
ensure
82+
I18n.config.enforce_available_locales = false
83+
end
84+
end
85+
86+
test "simple store_translations: store translations for unavailable locales if enforce_available_locales is false" do
7487
I18n.available_locales = [:en, :es]
7588
store_translations(:fr, :foo => {:bar => 'barfr', :baz => 'bazfr'})
76-
store_translations(:es, :foo => {:bar => 'bares', :baz => 'bazes'})
77-
assert_nil translations[:fr]
78-
assert_equal Hash[:foo, {:bar => 'bares', :baz => 'bazes'}], translations[:es]
89+
assert_equal Hash[:foo, {:bar => 'barfr', :baz => 'bazfr'}], translations[:fr]
7990
end
8091

8192
# reloading translations

0 commit comments

Comments
 (0)