如何翻译验证消息?

时间:2015-07-29 19:35:13

标签: ruby-on-rails ruby-on-rails-4

在application.rb中我改变了本地:

config.i18n.default_locale = :ru

我安装:

gem russian

我创建文件/config/locales/ru.yml:

ru:
  activerecord:
    errors:
      messages:
        Title: "Название"
        Description: 'Описание'

我在控制器验证消息中输出:

  def create
    @album = current_user.albums.build(album_params)

    if @album.save
      render json: @album, :status => 200 
    else
      @errors = Array.new
      p '----------------'
      @album.errors.full_messages.each do |msg|
        p msg
        @errors.push(msg)
      end    
      p '----------------'
      p @errors
      render json: @errors, :status => 403 
    end
  end   

这是我在控制台中得到的结果:

"----------------"
"Title не может быть пустым"
"Title недостаточной длины (не может быть меньше 3 символов)"
"Description не может быть пустым"
"Description недостаточной длины (не может быть меньше 10 символов)"
"----------------"

如您所见,字段名称(标题,描述)仍未翻译。我应该如何翻译它们?

1 个答案:

答案 0 :(得分:1)

此文件:/ config/locales/ru.yml需要额外的翻译才能让Rails将默认字段名称映射到俄语字符串。

使用这个确切的结构非常重要,否则不会加载字段名称的翻译。

activerecord:
  attributes:
   modelname:
     fieldname: translated string

所以,在你的例子中......

  activerecord:
    attributes: 
      album:    
        Description: Описание
        Title: Название           
        ...

请尝试让我知道它是怎么回事。