我在Rails 3中创建了一个虚拟(非持久)模型(见下文)
我现在需要将翻译应用于模型,但标准翻译位置似乎不起作用。 e.g。
en:
activerecord:
attributes:
media_upload:
title: "My Title"
我知道我可以使用可选的字符串参数将其直接应用于标签,例如。 f.label :title, t('activerecord.attributes.media_upload')
但这不适用于验证产生的错误消息。同样,我可以按照Localise nested virtual attribute in Rails中的建议为标签助手的翻译文件添加一个键,但这也无法用于验证。
helpers:
label:
media_upload:
title: "My Title"
除了重新定义所有相关的验证消息之外,还有其他方法可以在非持久性模型中进行属性本地化吗?
示例模型如下所示
class MediaUpload
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :media_file, :title
validates_presence_of :media_file
validates_presence_of :title
def initialize(attributes = {})
unless attributes.nil?
attributes.each do |name, value|
send("#{name}=", value)
end
end
end
def persisted?
false
end
end
答案 0 :(得分:5)
你需要这样写:
en:
activemodel:
attributes:
media_upload:
title: "My Title"
不activerecord
将其替换为activemodel
答案 1 :(得分:0)
您似乎正在使用simple_form gem来生成表单。
所以关注i18n chapter from github您的国际化文件应该如下所示
en:
simple_form:
labels:
media_upload:
media_file: My File
title: My Title
如果您使用的是Rails 4,则可以更轻松地制作ActiveModel Form Objects。您可以include ActiveModel::Model
喜欢这样
class MediaUpload
include ActiveModel::Model
attr_accessor :media_file, :title
validates_presence_of :media_file
validates_presence_of :title
end