2009-09-06 12 views
5

Ho usato le istruzioni in http://guides.rubyonrails.org/i18n.html per tradurre i campi del mio modello, ma le etichette non vengono tradotte. Quello che sto facendo è sbagliatoMessaggi di errore ActiveRecord: traduzione per campi

Ho un modello User con il campo name e mi piacerebbe averlo tradotto in brasiliano Portugues (pt_br), così ho preso il mio 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" 

quando sono arrivato alla pagina con un modulo:

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

ho Sill hanno il campo etichettato come "nome" e non come "nome" come mi piacerebbe che fosse. Ho anche

config.i18n.default_locale = :pt_br 

nel mio environment.rb

Che cosa manca?

risposta

5

È necessario namespace gli attributi sotto user, cioè .:

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

È inoltre possibile installare il i18n_label plugin per tradurre automaticamente le etichette.

+0

Excelent! Ha funzionato, ma c'è qualcosa di sbagliato nel tuo link (probabilmente de underscore) –

+0

Contento che abbia funzionato, il link dovrebbe essere corretto ora. – eremite

0

Si può provare <%= f.label :name, t('activerecord.attributes.name') %>.

+0

Si lavora per il campo, ma ho ancora ottenere i testi tradotti nel telaio errori (quando lascio vuoto di un campo obbligatorio, per esempio) –

0

Che dire di human_attribute_name? È lì da Rails 2.1.0.

penso che sia meglio di altre soluzioni:

<%= f.label :name, User.human_attribute_name(:name) %> 
Problemi correlati