2012-05-30 24 views
11

Tôi đã xác nhận sau đây trong mô hình của tôi (Thành viên):Làm cách nào để dịch tên thuộc tính ActiveRecord trong Rails 3.2?

validates :first_name,:length => {:minimum => 2,:maximum => 50},:format => { :with => /[a-zA-Z]+/ } 

Tôi có sau trong miền địa phương của tôi yml file:

attributes: 
    first_name: 
    too_short: "First name is too short" 
    too_long: "First name is too long" 
    invalid: "First name is not valid" 

Bây giờ, nếu tôi bắt đầu một rails console, và viết như sau :

a = User.new 
a.valid? 
a.errors.full_messages 

tôi sẽ thấy các lỗi sau đây:

["First name First name is too short", "First name First name is not valid"] 

Như bạn có thể thấy, tên thuộc tính cũng được thêm vào lỗi trường. Cho đến nay, ở khắp mọi nơi trong mã của tôi, tôi đã sử dụng model.errors[:field], và điều này sẽ luôn hiển thị cho tôi những chuỗi Tôi có trong file yml, nhưng tôi muốn thay đổi xâu kí tự sang:

attributes: 
    first_name: 
    too_short: " is too short" 
    too_long: " is too long" 
    invalid: " is not valid" 

Và sử dụng full_messages phiên bản. Vấn đề là, tôi không biết làm thế nào để dịch tên thuộc tính. Hãy nói ví dụ, mà tôi muốn thay vì tên đầu tiên, để có tên đầu tiên. Tôi sẽ làm như thế nào?

Trả lời

30

Bạn có thể tìm thấy câu trả lời ở đây http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

trong cấu hình của bạn/locale/(your_lang) .yml

en: 
    activerecord: 
    models: 
     user: Dude 
    attributes: 
     user: 
     first_name: "Name first" 

thay đổi "en:" với biểu tượng ngôn ngữ mà bạn cần phải sử dụng

chúc mừng

+1

Không xuất hiện để được làm việc cho đường ray 4.2 – AjaxLeung

+1

nó hoạt động trên đường ray (5.1.3). – hackvan

1

Trong Rails 5, sau attributes, tôi đã phải đặt tên không gian tên với mô hình của tôi dưới gạch dưới. Như thế này:

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

Nguồn: https://stackoverflow.com/a/5526812/1290457

Các vấn đề liên quan