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

How do I add an uncountable inflection for a non-word character in Rails

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

我可以通过 inflect.irregular '%', '%' 解决这个问题,但这似乎不是不规则用法的正确用法。

有没有我可以添加的东西,比如转义字符,让 rails 识别不可数数组中的“%”?或者,有没有更好的方法来处理变形之外的这种情况?

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

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

inflect.uncountable 仅适用于单词,或者更好地说,适用于 Regex 认为是单词的任何内容。我不确定这是实施的缺点还是预期的行为。

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