diff --git a/lib/freedom_patches/translate_accelerator.rb b/lib/freedom_patches/translate_accelerator.rb index d776670064b..9fc7bf77493 100644 --- a/lib/freedom_patches/translate_accelerator.rb +++ b/lib/freedom_patches/translate_accelerator.rb @@ -23,6 +23,7 @@ module I18n def init_accelerator!(overrides_enabled: true) @overrides_enabled = overrides_enabled + reserve_key(:overrides) execute_reload end diff --git a/spec/fixtures/i18n/translate_accelerator.de.yml b/spec/fixtures/i18n/translate_accelerator.de.yml index 8b1e01530f5..e33cdc96b11 100644 --- a/spec/fixtures/i18n/translate_accelerator.de.yml +++ b/spec/fixtures/i18n/translate_accelerator.de.yml @@ -2,3 +2,4 @@ de: foo: "Foo in :de" bar: "Bar in :de" wat: "Hello %{count}" + foo_with_variable: "Foo in :de with %{variable}" diff --git a/spec/fixtures/i18n/translate_accelerator.en.yml b/spec/fixtures/i18n/translate_accelerator.en.yml index f80233dc69d..ebffeb50b30 100644 --- a/spec/fixtures/i18n/translate_accelerator.en.yml +++ b/spec/fixtures/i18n/translate_accelerator.en.yml @@ -2,6 +2,7 @@ en: got: "winter" foo: "Foo in :en" bar: "Bar in :en" + foo_with_variable: "Foo in :en with %{variable}" wat: "Hello %{count}" world: "Hello %{world}" items: diff --git a/spec/lib/freedom_patches/translate_accelerator_spec.rb b/spec/lib/freedom_patches/translate_accelerator_spec.rb index c85f0ae5ff7..f6c67c7878f 100644 --- a/spec/lib/freedom_patches/translate_accelerator_spec.rb +++ b/spec/lib/freedom_patches/translate_accelerator_spec.rb @@ -221,6 +221,19 @@ describe "translate accelerator" do override_translation('en', 'fish', 'fake fish') expect(Fish.model_name.human).to eq('Fish') end + + it "works when the override contains an interpolation key" do + expect(I18n.t("foo_with_variable")).to eq("Foo in :en with %{variable}") + I18n.with_locale(:de) { expect(I18n.t("foo_with_variable")).to eq("Foo in :de with %{variable}") } + + override_translation("en", "foo_with_variable", "Override in :en with %{variable}") + expect(I18n.t("foo_with_variable")).to eq("Override in :en with %{variable}") + I18n.with_locale(:de) { expect(I18n.t("foo_with_variable")).to eq("Foo in :de with %{variable}") } + + override_translation("de", "foo_with_variable", "Override in :de with %{variable}") + expect(I18n.t("foo_with_variable")).to eq("Override in :en with %{variable}") + I18n.with_locale(:de) { expect(I18n.t("foo_with_variable")).to eq("Override in :de with %{variable}") } + end end context "translation precedence" do