2015-07-29 3 views
0

В 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 символов)" 
"----------------" 

Как вы можете видеть, имена полей (название, описание) остались непереведенным. Как мне перевести их?

ответ

2

Этот файл: /config/locales/ru.yml требует дополнительных переводов, чтобы Rails сопоставляла имена полей по умолчанию с вашими русскими строками.

Очень важно использовать эту точную структуру, или перевод для названий полей не будет загружен.

activerecord: 
    attributes: 
    modelname: 
    fieldname: translated string 

Таким образом, в вашем примере ...

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

Пожалуйста, попробуйте и дайте мне знать, как она идет.

+0

очень спасибо. он работал – stackov8

+0

Это здорово. Я рад, что это помогло решить вашу проблему. – Elvn

Смежные вопросы