2010-08-18 14 views
25

ActionView documentation'a göre. Alıntı: (.. Views.labels aracılığıyla < ModelAdı > <nitelik>) bir çeviri akım I18n yerel bulunamadı sürece etiketinForm etiketleri için raylar i18n ve yml yapısı

metin öznitelik adının varsayılan olarak veya açıkça belirtin.

"Kullanıcı" modelim ve kayıt formum var. İşte ilgili bölümün bir pasajıdır: Önemli olmayan kodları gizle. Benim yerel dosyasında bir çeviri sağlarsanız

Ben bu durumda, belgeleri anlamak gibi: dk, benim dk.yml böylece gibi bakıyor:

dk: 
    views: 
     labels: 
      user: 
       username: 
        "blahblah" 

Raylar etiket metni çevirmek ve eklemeniz gerekir " blahblah "kullanıcı adı" yerine.

Bu gerçekleşmiyor, bu yüzden bir şeyleri kaçırmış olmalıyım. Herhangi bir yardım takdir edildi.

cevap

26

Sanırım burada başka bir çözüm buldum.

Uygulamam sürüm 2.3.5'tü. Şimdi 2.3.8 bunu değiştirdik ve <%= f.label :username %> şimdi çevirisi kullanır: Raylar 3.1'de

https://rails.lighthouseapp.com/projects/8994/tickets/745-form-label-should-use-i18n

+0

"İlk isminizi girin" gibi bir etiketiniz olsun? Öznitelik gibi bir deyimin ayarının temiz olduğunu hissetmiyorum, bazı özel durumlarda bazı sorunlara yol açacaktır.Bir form etiketini özelleştirmek için Voldy'nin cevabının doğru bir yolunu izleyin. Her iki yaklaşımı da birlikte kullanabilirsiniz, ancak Voldy'nin yaklaşımı bunu sizin formunuzda geçersiz kılar ve – mizurnix

1

ActionView::Helpers::FormHelper numaralı telefondan aradığınız label yönteminden değil, ActionView::Helpers::FormTagHelper numaralı label_tag yönteminden biridir. form_for yöntemi, kullanılan form yardımcılarına _tag ekleyerek verilen bloktaki kodu yeniden yazıyor. Yani doğru yöntemin belgelerine bakmıyorsunuz!

Bu yöntemi kullanmadım, bazen bir alanın etiketi aynı modeli kullanan birden çok formdan farklı olabileceğinden, kendi yardımcımı yazdım.

+0

Teşekkür ederim, bunu bilmiyordum. Form_for ve etiket yöntemleri her ikisi de 'ActionView :: Helpers :: FormHelper' doc sayfasında bulunur, bu yüzden böyle birlikte çalıştıklarını varsaydım. Kodumu şu şekilde değiştirdim: '<% = etiket: kullanıcı,: kullanıcı adı%>' Aynı yml dosyasıyla, ancak çeviriyi hala alamıyorum. 'Label' çağrısının 'form_for' bloğu içinde olması önemli mi? – rhardih

+1

Dürüst olmak gerekirse, bu özelliği işe yaramadım. Merak ediyorum, Rails koduna baktım ve bunun eski bir özellik olduğunu ve belgelerin sabitlenmediğini düşünüyorum: 'content = (text.blank?? Nil: text.to_s) || form_helper.rb –

+0

satır 473'te method_name.humanize' Bu durumda, '.yml çeviri dosyanızda bulunan 'kapsamı' belirterek' t' yöntemini kullanmalısınız. '<% = t: title, kapsam: [: helpers,: label,: post]%>'. – mariowise

41

biraz: Ben bu bilet ipucu bulundu

dk: 
    activerecord: 
    attributes: 
     user: 
     username: 

değişti.

<% form_for @post do |f| %> 
    <%= f.label :title %> 
    <%= f.text_field :title %> 
    <%= f.submit %> 
<% end %> 

en: 
    helpers: 
    label: 
     post: 
     title: 'Customized title' 
+3

bunun için teşekkürler. Bu biçim hakkında daha fazla bilgi edinmek için bakabileceğim bir sürüm notu veya bir şey var mı? – astjohn

+1

Bu biçimin açıklaması [ActionView :: Helpers :: FormHelper.label] (http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-label) belgelerinde bulunabilir. – simonnordberg

+1

Bunun, Rails 4.0'da da benim için çalıştığını onaylayabilirim. –

İlgili konular