2009-05-22 28 views
6

Tôi đã xác định các thuộc tính đã dịch và tên mẫu trong tệp dịch và Modelname.human_attribute_name (...) trả về tên thuộc tính đã dịch đúng, nhưng tên thuộc tính các thông báo lỗi không được dịch. Điều gì là cần thiết mà các tên thuộc tính trong các thông báo lỗi được dịch?Các thuộc tính đã dịch trong các thông báo lỗi Rails (Rails 2.3.2, I18N)

+0

Tôi có vấn đề tương tự. Nhưng trong bản dịch ứng dụng của tôi không hoạt động đối với tên mẫu. Có lẽ một lỗi trong mã Rails. Tuy nhiên tên thuộc tính được dịch một cách chính xác. –

Trả lời

13

Từ Guide về đề tài này, bạn sẽ cần phải thiết lập các tập tin định vị đúng với tên mô hình của bạn và tên thuộc tính:

en: 
    activerecord: 
    models: 
     user: Dude 
    attributes: 
     user: 
     login: "Handle" 

Do đây là YAML, đảm bảo tất cả "tab" của bạn đang thực sự hai không gian mềm. Sau đó, bạn có thể lấy chúng ra với User.human_nameUser.human_attribute_name(:login).

Tôi đã không làm điều đó cho phúc âm - có thể có một lỗi. Tôi đã thử nghiệm nó, và nó hoạt động tốt. Tôi đã tạo mô hình có tên là Model với thuộc tính title. Dưới đây là một đoạn của file fr.yml tôi trong config/locales:

fr: 
    activerecord: 
    models: 
     model: "Sumfink" 
    attributes: 
     model: 
     title: "Tiltile" 

Dưới đây là đoạn code xem có liên quan:

<h1>New <%= Model.human_name %></h1> 
<% form_for(@model) do |f| %> 
    <%= f.error_messages %> 
    <%= Model.human_attribute_name("title") %><br /> 
    <%= f.text_field :title %> 
    <%= f.error_message_on :title %> 
... 

Và một ảnh chụp màn hình của sản lượng dịch đúng: http://screencast.com/t/et5FhVe1Gp

+0

Cảm ơn bạn rất nhiều vì câu trả lời chi tiết của bạn. Tôi đã thử nó với một dự án mới. Tôi đã sử dụng một tệp dịch từ một dự án hiện có và thêm một mô hình mới để kiểm tra bản dịch và bản dịch đã hoạt động ngay lập tức. Tôi không có quyền truy cập vào tệp bản dịch gốc, nơi các chuỗi không được sử dụng để dịch, bởi vì nó ở nơi làm việc của tôi. Tôi sẽ xem xét nó vào thứ hai để xem những gì là khác nhau. Ứng dụng với bản dịch thành công đang chạy trên Linux, ứng dụng tại nơi làm việc chạy trong Windows. –

+0

Tệp dịch của tôi là chính xác. Tôi đã bỏ qua phần "_id" của tên cột vì chúng không được hiển thị trong thông báo lỗi của chế độ xem. Tôi đã sử dụng "mô hình" thay vì "model_id". –

+0

Liên kết đến ảnh chụp màn hình bị hỏng. Bạn có người khác bạn có thể cung cấp? Cảm ơn bạn – mkelley33

1

Kudos để Ian, chỉ muốn thêm nhãn đó để làm nổi bật nhãn trong trường hợp xác nhận không thành công, bạn cần viết nhãn như sau:

<%= f.label "title", Model.human_attribute_name("title") %><br /> 

Đối với một số lý do, viết nó chỉ thích:

<%= f.label "title" %><br /> 

không hiển thị bản dịch.

+2

Bạn đang sử dụng phiên bản Rails nào? Lỗi này của nhãn đã được khắc phục trong 2.3.6: https://rails.lighthouseapp.com/projects/8994/tickets/745-form-label-should-use-i18n – giraff

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