From a4399c2eabcc32f277dc7b355a22fba2b9bffc2f Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Fri, 7 Jul 2017 12:28:00 +0900 Subject: [PATCH] FIX: Translation overrides were not cached by locale properly. --- lib/freedom_patches/translate_accelerator.rb | 7 ++++--- .../translate_accelerator_spec.rb | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/freedom_patches/translate_accelerator.rb b/lib/freedom_patches/translate_accelerator.rb index 4d10292b6d..ae6c1d48f5 100644 --- a/lib/freedom_patches/translate_accelerator.rb +++ b/lib/freedom_patches/translate_accelerator.rb @@ -104,10 +104,9 @@ module I18n site = RailsMultisite::ConnectionManagement.current_db by_site = @overrides_by_site[site] + by_site ||= {} - if by_site.nil? || !by_site.has_key?(locale) - by_site = @overrides_by_site[site] = {} - + if !by_site.has_key?(locale) # Load overrides translations_overrides = TranslationOverride.where(locale: locale).pluck(:translation_key, :value, :compiled_js) @@ -119,6 +118,8 @@ module I18n by_locale[tuple[0]] = tuple[2] || tuple[1] end end + + @overrides_by_site[site] = by_site end by_site[locale].with_indifferent_access diff --git a/spec/components/freedom_patches/translate_accelerator_spec.rb b/spec/components/freedom_patches/translate_accelerator_spec.rb index 6fef757ee0..883edd6f1c 100644 --- a/spec/components/freedom_patches/translate_accelerator_spec.rb +++ b/spec/components/freedom_patches/translate_accelerator_spec.rb @@ -14,4 +14,22 @@ describe "translate accelerator" do expect(I18n.t(key.to_sym)).to eq(text_overriden) end + describe '.overrides_by_locale' do + it 'should cache overrides for each locale' do + TranslationOverride.upsert!('en', 'got', "summer") + TranslationOverride.upsert!('zh_TW', 'got', "冬季") + I18n.backend.store_translations(:en, got: 'winter') + + I18n.overrides_by_locale('en') + I18n.overrides_by_locale('zh_TW') + + expect(I18n.instance_variable_get(:@overrides_by_site)).to eq( + "default" => { + "en" => { "got" => "summer" }, + "zh_TW" => { "got" => "冬季" } + } + ) + end + end + end