From 67ff36e4b5f27f411882ca7619d8e9ee42c7e226 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 21 Aug 2025 18:18:20 +0100 Subject: [PATCH] Add test for mediawiki magic words in translations Fixes #6341 --- test/lib/i18n_test.rb | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/test/lib/i18n_test.rb b/test/lib/i18n_test.rb index 89bc134ba..b3a79667b 100644 --- a/test/lib/i18n_test.rb +++ b/test/lib/i18n_test.rb @@ -57,13 +57,20 @@ class I18nTest < ActiveSupport::TestCase Rails.root.glob("config/locales/*.yml").each do |filename| code = File.basename(filename, ".yml") + yml = YAML.load_file(filename) + test "#{code} for raw html" do - yml = YAML.load_file(filename) assert_nothing_raised do check_values_for_raw_html(yml) end end + test "#{code} for mediawiki magic" do + assert_nothing_raised do + check_values_for_mediawiki_magic(yml) + end + end + test "#{code} present once in ui_languages.yml" do assert_equal(1, AVAILABLE_LANGUAGES.count { |language| language[:code] == code }) end @@ -135,6 +142,16 @@ class I18nTest < ActiveSupport::TestCase end end + def check_values_for_mediawiki_magic(hash) + hash.each_pair do |k, v| + if v.is_a? Hash + check_values_for_mediawiki_magic(v) + else + raise "Avoid using mediawiki magic in '#{k}: #{v}'" if v.match?(/\{\{(PLURAL|GENDER|GRAMMAR)[|:]/) + end + end + end + def check_values_for_nil(hash) hash.each_pair do |k, v| if v.is_a? Hash -- 2.39.5