Rails 4 活动记录枚举很棒,但是使用 i18n 进行翻译的正确模式是什么?
从Rails 5开始,所有模型都将继承自ApplicationRecord
.
class User < ApplicationRecord
enum status: [:active, :pending, :archived]
end
我使用这个超类来实现翻译枚举的通用解决方案:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
def self.human_enum_name(enum_name, enum_value)
I18n.t("activerecord.attributes.#{model_name.i18n_key}.#{enum_name.to_s.pluralize}.#{enum_value}")
end
end
然后我将翻译添加到我的.yml
file:
en:
activerecord:
attributes:
user:
statuses:
active: "Active"
pending: "Pending"
archived: "Archived"
最后,为了获得我使用的翻译:
User.human_enum_name(:status, :pending)
=> "Pending"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)