2009-09-06 16 views
5

Użyłem instrukcji określonych w http://guides.rubyonrails.org/i18n.html do tłumaczenia pól w moim modelu, ale etykiety nie są tłumaczone. Co robię źle.Komunikaty o błędach ActiveRecord: tłumaczenie dla pól

Mam User model z pola name i chciałbym mieć to przetłumaczone na brazylijskim Português (pt_BR), więc dostałem pt_br.yml:

pt_br: 
    errors: "Erro!" 
    activerecord: 
     models: 
      user: "Usuário" 
     attributes: 
      name: "Nome" 
      address: "Endereço" 
     errors: 
      template: 
       body: "Por favor, corrija os campos assinalados" 
       header: "Dados inválidos" 
      messages: 
       blank: "é obrigatório" 
       taken: "já existe" 
       too_short: "incompleto" 

kiedy dotarłem do strony w formularzu:

<% form_for(@usuario) do |f| %> 
<%= f.error_messages %> 
<%= f.label :name %> 
<%= f.text_field :name %> 
<% end %> 

Mam parapet oznaczony jako "nazwa", a nie "Nome", jak chciałbym. Mam też

config.i18n.default_locale = :pt_br 

w moim environment.rb

Czego brakuje?

Odpowiedz

5

Trzeba atrybuty przestrzeni nazw pod user, tj .:

pt_br: 
    activerecord: 
    attributes: 
     user: 
     name: "Nome" 
     address: "Endereço" 

Można również zainstalować i18n_label plugin automatycznie przetłumaczyć etykiety.

+0

Excelent! Udało się, ale coś jest nie tak z twoim linkiem (prawdopodobnie de podkreślenie) –

+0

Cieszę się, że działało, link powinien być teraz naprawiony. – eremite

0

Możesz spróbować <%= f.label :name, t('activerecord.attributes.name') %>.

+0

Działa na polu, ale wciąż otrzymuję teksty untranslated w ramie błędów (kiedy pozostaw puste pole obowiązkowe, na przykład) –

0

Co z human_attribute_name? Czy istnieje od Rails 2.1.0.

myślę, że to lepsze niż jakiekolwiek inne rozwiązania:

<%= f.label :name, User.human_attribute_name(:name) %> 
Powiązane problemy