如何使用Rails 5和I18n使human_attribute_name复数?

时间:2018-09-06 10:17:54

标签: ruby-on-rails ruby-on-rails-5 rails-i18n

我想在我的应用程序中转换属性名称并将其复数。

因此,对于我的api_key属性,我的翻译是“ Clef API”。

我用Mymodel.human_attribute_name(:api_key).pluralize(2)来复数属性名称,结果是:"Clef APIs"

但是在法语中,“ Clef API”的复数形式是“ Clefs API”

因此,我尝试在YML中提供复数形式的翻译,但它不起作用,并且我仍然获得了以“ s”结尾的复数形式的“一个”的翻译。

fr.yml:

activerecord:
  attributes:
    mymodel:
      api_key:
        one: "Clef API"
        other: "Clefs API"  

我可以让Mymodel.human_attribute_name(:api_key).pluralize(2)返回"Clefs API"吗?

如果没有,我该如何翻译和复数我的属性名称?

2 个答案:

答案 0 :(得分:4)

在发布我的问题之后,尽管我应该检查human_attribute_name的文档以获取提示。它确实解决了我的问题...

结果human_attribute_name直接处理复数。它接受带有键options的{​​{1}}哈希,该哈希确实像其他I18n方法一样触发了复数。

所以,就像做:count

一样简单

答案 1 :(得分:3)

您可以在config/initializers/inflections.rb变形器中添加自定义的复数词。您可以在下面看到代码示例:

ActiveSupport::Inflector.inflections(:fr) do |inflect|
  inflect.irregular 'Clef API', 'Clefs API'
end