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)
Odpowiedz
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
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. –
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". –
Link do zrzutu ekranu jest uszkodzony. Czy masz jeszcze coś, co możesz dostarczyć? Dziękujemy – mkelley33
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.
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
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. –