diff --git a/app/jobs/scheduled/check_translation_overrides.rb b/app/jobs/scheduled/check_translation_overrides.rb index 5efed5592dc..20d708063c0 100644 --- a/app/jobs/scheduled/check_translation_overrides.rb +++ b/app/jobs/scheduled/check_translation_overrides.rb @@ -19,9 +19,9 @@ module Jobs end end - TranslationOverride.where(id: deprecated_ids).update_all(status: "deprecated") TranslationOverride.where(id: outdated_ids).update_all(status: "outdated") TranslationOverride.where(id: invalid_ids).update_all(status: "invalid_interpolation_keys") + TranslationOverride.where(id: deprecated_ids).update_all(status: "deprecated") end end end diff --git a/app/models/translation_override.rb b/app/models/translation_override.rb index 1da96f4479c..e2d74796429 100644 --- a/app/models/translation_override.rb +++ b/app/models/translation_override.rb @@ -49,10 +49,14 @@ class TranslationOverride < ActiveRecord::Base attribute :status, :integer enum status: { up_to_date: 0, outdated: 1, invalid_interpolation_keys: 2, deprecated: 3 } - scope :mf_locales, ->(locale) { where(locale: locale).where("translation_key LIKE '%_MF'") } + scope :mf_locales, + ->(locale) do + where(locale: locale).where.not(status: "deprecated").where("translation_key LIKE '%_MF'") + end scope :client_locales, ->(locale) do where(locale: locale) + .where.not(status: "deprecated") .where("translation_key LIKE 'js.%' OR translation_key LIKE 'admin_js.%'") .where.not("translation_key LIKE '%_MF'") end diff --git a/lib/i18n/i18n_interpolation_keys_finder.rb b/lib/i18n/i18n_interpolation_keys_finder.rb index ab92624630c..325df214950 100644 --- a/lib/i18n/i18n_interpolation_keys_finder.rb +++ b/lib/i18n/i18n_interpolation_keys_finder.rb @@ -2,6 +2,7 @@ class I18nInterpolationKeysFinder def self.find(text) + return [] unless text.is_a? String pattern = Regexp.union([*I18n.config.interpolation_patterns, /\{\{(\w+)\}\}/]) keys = text.scan(pattern) keys.flatten! diff --git a/spec/lib/js_locale_helper_spec.rb b/spec/lib/js_locale_helper_spec.rb index 4f41d7d470e..f155ca57a29 100644 --- a/spec/lib/js_locale_helper_spec.rb +++ b/spec/lib/js_locale_helper_spec.rb @@ -260,4 +260,25 @@ RSpec.describe JsLocaleHelper do end end end + + describe ".output_client_overrides" do + it "should not output deprecated translation overrides" do + Fabricate( + :translation_override, + locale: "en", + translation_key: "js.user.preferences.title", + value: "SHOULD_SHOW", + ) + Fabricate( + :translation_override, + locale: "en", + translation_key: "js.user.preferences", + value: "SHOULD_NOT_SHOW", + status: "deprecated", + ) + + expect(described_class.output_client_overrides("en").include? "SHOULD_SHOW").to eq(true) + expect(described_class.output_client_overrides("en").include? "SHOULD_NOT_SHOW").to eq(false) + end + end end