Avoid using the zero key for pluralisation in English

This makes it impossible to translate to other languages that use the
`zero:` key, e.g. for other numbers that end in zero.

An alternative approach would be possible in future, when ruby-i18n
and rails and translatewiki all have full support for `0:` and `1:` keys.

Fixes #3997
This commit is contained in:
Andy Allan 2023-07-05 14:42:07 +01:00
parent e66d0d232f
commit d58cae6ff6
4 changed files with 33 additions and 4 deletions

View file

@ -69,6 +69,15 @@ class I18nTest < ActiveSupport::TestCase
end
end
# We should avoid using the key `zero:` in English, since that key
# is used for "numbers ending in zero" in other languages.
def test_en_for_zero_key
en = YAML.load_file(Rails.root.join("config/locales/en.yml"))
assert_nothing_raised do
check_keys_for_zero(en)
end
end
private
def translation_keys(scope = nil)
@ -116,4 +125,14 @@ class I18nTest < ActiveSupport::TestCase
end
end
end
def check_keys_for_zero(hash)
hash.each_pair do |k, v|
if v.is_a? Hash
check_keys_for_zero(v)
else
raise "Avoid using 'zero' key in '#{k}: #{v}'" if k.to_s == "zero"
end
end
end
end