Rails Ruby 中的自定义复数形式

Custom pluralization in Ruby on Rails

我有一个月份范围字符串,并希望以这种方式将其复数化:

I18n.t :range, min: min_date, max: max_date

如果 min_datemax_date 相等,则应转换为 %{min_date} to %{max_date},但如果它们不同,我只想显示 %{min_date}.

如何在我的语言环境文件中做到这一点:

range: one: "%{min_date}" other: "%{min_date} to %{max_date}"

这不是真正的国际化插值工作。您可能最好只使用一种方法(例如,在辅助模块中)。这样,您就可以明确说明自己想要实现的目标,而无需滥用不相关的机制。

def render_range(min_date, max_date)
  if min_date == max_date
    min_date.to_s
  else
    I18n.t :range, min: min_date.to_s, max: max_date.to_s
  end
end

然后,在您的定位文件中,您可以像这样指定范围键:

range: "%{min} to %{max}"