From 4f36f604c8a6321df39eb068b690ab25bec1240a Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Fri, 30 Apr 2021 13:54:45 +0200 Subject: [PATCH] FIX: Looking up translation overrides by symbol failed when `count` is used (#12896) --- lib/i18n/backend/discourse_i18n.rb | 3 ++- .../freedom_patches/translate_accelerator_spec.rb | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/i18n/backend/discourse_i18n.rb b/lib/i18n/backend/discourse_i18n.rb index 52b387e69aa..2fd498f6687 100644 --- a/lib/i18n/backend/discourse_i18n.rb +++ b/lib/i18n/backend/discourse_i18n.rb @@ -91,6 +91,7 @@ module I18n return existing_translations if scope.is_a?(Array) && scope.include?(:models) overrides = options.dig(:overrides, locale) + key = key.to_s if overrides if options[:count] @@ -112,7 +113,7 @@ module I18n result = {} remapped_translations.merge(overrides).each do |k, v| - result[k.split('.').last.to_sym] = v if k != key && k.start_with?(key.to_s) + result[k.split('.').last.to_sym] = v if k != key && k.start_with?(key) end return result if result.size > 0 end diff --git a/spec/components/freedom_patches/translate_accelerator_spec.rb b/spec/components/freedom_patches/translate_accelerator_spec.rb index effea352b3f..cd52c799ede 100644 --- a/spec/components/freedom_patches/translate_accelerator_spec.rb +++ b/spec/components/freedom_patches/translate_accelerator_spec.rb @@ -179,6 +179,12 @@ describe "translate accelerator" do expect(I18n.t('items', count: 1)).to eq('one fish') end + it "works with strings and symbols for non-pluralized string when count is given" do + override_translation('en', 'fish', 'trout') + expect(I18n.t(:fish, count: 1)).to eq('trout') + expect(I18n.t('fish', count: 1)).to eq('trout') + end + it "supports one and other with fallback locale" do override_translation('en_GB', 'items.one', 'one fish') override_translation('en_GB', 'items.other', '%{count} fishies')