我想在我的应用程序中翻译和复数属性名称。
所以,对于我的api_key属性,我有翻译“Clef API”。
我用Mymodel.human_attribute_name(:api_key).pluralize(2)
复数属性名称,得到结果:"Clef APIs"
但在法语中,“Clef API”的复数是“Clefs API”
所以我试着在我的YML中给出多个翻译,但是它不起作用,我仍然认为最后用“s”复数形式的“One”的转换。
fr.yml:
activerecord:
attributes:
mymodel:
api_key:
one: "Clef API"
other: "Clefs API"
我可以让Mymodel.human_attribute_name(:api_key).pluralize(2)
返回"Clefs API"
吗?
如果没有,我怎么能翻译和复数我的属性名称?
您可以在config/initializers/inflections.rb
的Inflectors中添加自定义复数单词。您可以在下面看到代码示例:
ActiveSupport::Inflector.inflections(:fr) do |inflect|
inflect.irregular 'Clef API', 'Clefs API'
end
在发布我的问题之后,我虽然应该检查human_attribute_name的文档以获取提示。它确实解决了我的问题......
结果human_attribute_name
直接处理复数化。它接受一个options
哈希与密钥:count
,触发复数与其他I18n方法一样。
所以,它就像做Mymodel.human_attribute_name(:api_key, count: 2)
一样简单