2009-05-22 9 views
6

Mam zdefiniowane przetłumaczone atrybuty i nazwy modeli w pliku tłumaczenia i Modelname.human_attribute_name (...) zwraca poprawnie przetłumaczoną nazwę atrybutu, ale nazwy atrybutów w komunikaty o błędach są nieprzetłumaczone. Co jest potrzebne, aby nazwy atrybutów w komunikatach o błędach były przetłumaczone?Przetłumaczone atrybuty w komunikatach o błędach w Railsach (Rails 2.3.2, I18N)

+0

Mam podobny problem. Ale w mojej aplikacji tłumaczenie nie działa dla nazw modeli. Prawdopodobnie jest to błąd w kodzie Rails. Jednak nazwy atrybutów są tłumaczone poprawnie. –

Odpowiedz

13

Z Guide na ten temat, trzeba będzie skonfigurować plik lokalizacyjny właściwie ze swoimi nazwami modelu i nazwy atrybutów:

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

Ponieważ jest YAML, upewnij się, że wszystkie „wypustki” są w rzeczywistości dwie miękkie przestrzenie. Następnie możesz je uzyskać za pomocą User.human_name i User.human_attribute_name(:login).

Nie wziąłem tego dla ewangelii - mógł istnieć błąd. Testowałem to i działa dobrze. Zrobiłem model o nazwie Model z atrybutem title. Oto urywek z mojego pliku fr.yml w config/locales:

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

Oto odpowiedni kod Widok:

<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 %> 
... 

I zrzut ekranu prawidłowo przetłumaczone wyjścia: http://screencast.com/t/et5FhVe1Gp

+0

Dziękuję bardzo za szczegółową odpowiedź. Próbowałem go z nowym projektem. Użyłem pliku tłumaczenia z istniejącego projektu i dodałem nowy model do przetestowania tłumaczenia, a tłumaczenie działało natychmiast. Nie mam dostępu do oryginalnego pliku tłumaczeniowego, w którym napisy nie były używane do tłumaczenia, ponieważ są w moim miejscu pracy. Przyjrzę się temu w poniedziałek, żeby zobaczyć, co jest innego. Aplikacja z udanym tłumaczeniem działała na systemie Linux, aplikacja działa w systemie Windows. –

+0

Mój plik tłumaczący był poprawny. Wycofałem część nazwy kolumny "_id", ponieważ nie były one wyświetlane w komunikacie o błędzie w widoku. Użyłem "modelu" zamiast "model_id". –

+0

Link do zrzutu ekranu jest uszkodzony. Czy masz jeszcze coś, co możesz dostarczyć? Dziękujemy – mkelley33

1

Kudos Ian, po prostu chciałem dodać, że aby podświetlić etykietę w przypadku nieudanego sprawdzania poprawności, musisz napisać tak:

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

Z jakiegoś powodu, pisząc go właśnie lubię:

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

nie wyświetla tłumaczenie.

+2

Jakiej wersji Railsów używasz? Ten błąd etykiety został naprawiony w wersji 2.3.6: https://rails.lighthouseapp.com/projects/8994/tickets/745-form-label-should-use-i18n – giraff