11

我的模型( User )中有以下验证:

  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"

现在,如果我启动 a 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 版本。问题是,我不知道如何翻译属性名称。比方说,我想而不是名字,首先有名字。我该怎么做?

4

2 回答 2

32

你可以在这里找到答案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:”

干杯

于 2012-05-30T08:53:46.487 回答
3

在 Rails 5 之后attributes,我必须使用下划线中的模型名称来命名空间。像这样:

pt-BR:
  activerecord:
    attributes:
      my_model_name_in_underscore: 
        attribute_name: 'String'  

来源:https ://stackoverflow.com/a/5526812/1290457

于 2017-06-02T00:38:24.827 回答