We work with many languages using Crowdin[1] Sometimes translators forget to fill in all the necessary plural forms of a translation (zero, one, other) and in those cases we were seing the exception InvalidPluralizationData being raised There are a number of approches to fix this... from being more strict when approving translations, to automatically extrapolating what those plural forms should be For now, we've gone for a simple approach to display the actual count(0,1,2,3,4, etc) instead of the whole translation So, if the plural form of "1 comment" is missing, just a "1" will be displayed and no exceptions raised Note: The first two specs, test what is really Rails' functionalities. However as we are monkey patching the pluralize method, I thought it was appropriate to doble check it [1]https://crowdin.com/project/consul
19 lines
542 B
Ruby
19 lines
542 B
Ruby
### From official I18n::Backend::Base
|
|
### https://github.com/svenfuchs/i18n/blob/f35b839693c5ecc7ea0ff0f57c5cbf6db1dd73f9/lib/i18n/backend/base.rb#L155
|
|
### Just changed one line to return `count` instead of raising the exception `InvalidPluralizationData`
|
|
|
|
module I18n
|
|
module Backend
|
|
module Base
|
|
|
|
def pluralize(locale, entry, count)
|
|
return entry unless entry.is_a?(Hash) && count
|
|
|
|
key = pluralization_key(entry, count)
|
|
return count unless entry.has_key?(key)
|
|
entry[key]
|
|
end
|
|
|
|
end
|
|
end
|
|
end |