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

问题描述 投票:2回答:2

我想在我的应用程序中翻译和复数属性名称。

所以,对于我的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"吗?

如果没有,我怎么能翻译和复数我的属性名称?

ruby-on-rails ruby-on-rails-5 rails-i18n
2个回答
3
投票

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

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

4
投票

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

结果human_attribute_name直接处理复数化。它接受一个options哈希与密钥:count,触发复数与其他I18n方法一样。

所以,它就像做Mymodel.human_attribute_name(:api_key, count: 2)一样简单

© www.soinside.com 2019 - 2024. All rights reserved.