如何在 Rails 中为非单词字符添加不可数的屈折变化



在Rails应用程序中,我有许多测量值以人类可读的形式显示,其中包括值和单位。 有时单位字符串需要复数,如"1 分钟,2 分钟",但有时则不像"1 公斤,2 公斤"。 我能够通过添加"kg"来解决这个问题,在 inflections.rb 中执行inflect.uncountable列表。 但是,将"%"添加到列表中没有任何效果。 我在控制台中确认"%"已添加到@uncountables,但调用pluralize(90, '%')仍然返回90 %s

我能够通过做inflect.irregular '%', '%'来解决这个问题,但这似乎不像是不规则的正确使用。

我可以添加一些东西,比如转义字符,让轨道识别不可数数组中的"%"? 或者,有没有更好的方法来处理拐点之外的问题?

作为参考,inflections.rb 现在看起来像

ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.plural /^(ox)$/i, '1en'
# inflect.singular /^(ox)en/i, '1'
inflect.irregular '%', '%'
inflect.uncountable %w( bpm kg mL )
end

inflect.uncountable只适用于单词,或者更好地说,适用于正则表达式认为是单词的任何内容。我不确定这是实现的缺点还是预期行为的缺点。

对我来说,inflect.irregular '%', '%'看起来像是一个完美的解决方法。

最新更新