【问题标题】:How can I translate ActiveRecord model class name?如何翻译 ActiveRecord 模型类名称?
【发布时间】:2012-07-20 00:48:22
【问题描述】:

当我有一个 ActiveRecord 模型类的实例时,获取它的翻译名称的最简单方法是什么?

例如 - 我有这样的模型类:

class Category < ActiveRecord::Base
  ...
end

我有一个类的实例:

category = Category.first

我有 YAML 文件 config/locales/cs.yml:

cs:
  activerecord:
    models:
      category: Kategorie

而且我需要动态地执行此操作,即使我以前不知道我将处理什么模型类的实例。所以我不想明确指定“activerecord.models.category”。

有没有简单的方法来做到这一点?我知道,我可以做这样的事情

"activerecord.models.#{category.class.name.underscore}"

但必须有更好的方法来做到这一点。

【问题讨论】:

    标签: ruby-on-rails activerecord internationalization


    【解决方案1】:

    见:

    http://api.rubyonrails.org/classes/ActiveModel/Naming.html http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

    因此,例如,在 AR 类上使用:

    Person.model_name.human
    

    或来自 AR 实例:

    person.class.model_name.human
    

    【讨论】:

    • 我发现name 更有用,而不是human,它会添加空格和小写字母,但第一个字母除外。所以:SomePerson.model_name.name 返回SomePerson
    【解决方案2】:

    查看constantizeclassify

    【讨论】:

    • 感谢您的回答。但是这些方法并不能解决这个问题。正如我所提到的,我可以使用underscore 并构建实际的翻译“路径”。但是我问,是否有一些方法可以直接翻译模型实例(或模型类本身)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多