我的模型(用户)中有以下验证:
validates :first_name,:length => {:minimum => 2,:maximum => 50},:format => { :with => /[a-zA-Z]+/ }
我的yml语言环境文件中包含以下内容:
attributes:
first_name:
too_short: "First name is too short"
too_long: "First name is too long"
invalid: "First name is not valid"
现在,如果我开始rails console
,请写下以下内容:
a = User.new
a.valid?
a.errors.full_messages
我会看到以下错误:
["First name First name is too short", "First name First name is not valid"]
如您所见,属性名称也是字段错误的前缀。到目前为止,在我的代码中,我使用了model.errors[:field]
,这将始终显示我在yml文件中的字符串,但我想将字符串更改为:
attributes:
first_name:
too_short: " is too short"
too_long: " is too long"
invalid: " is not valid"
并使用full_messages版本。问题是,我不知道如何翻译属性名称。比方说,我想先取名字,而不是名字。我该怎么做?
答案 0 :(得分:31)
您可以在http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models
找到答案在你的config / locale /(your_lang).yml
中en:
activerecord:
models:
user: Dude
attributes:
user:
first_name: "Name first"
使用您需要使用的语言符号更改“en:”
欢呼声
答案 1 :(得分:3)
在Rails 5中,在attributes
之后,我必须使用下划线中的模型命名空间。像这样:
pt-BR:
activerecord:
attributes:
my_model_name_in_underscore:
attribute_name: 'String'