2010-08-18 69 views
25

के लिए रेल लेबल i18n और yml संरचना। उद्धरण:<a href="http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#M002292" rel="noreferrer">ActionView documentation</a> के अनुसार

लेबल का पाठ जब तक एक अनुवाद वर्तमान I18n स्थान में पाया जाता है विशेषता नाम लागू हो जाएगी या आप इसे स्पष्ट रूप से निर्दिष्ट (views.labels के माध्यम से <modelname> < विशेषता >।।)।

मेरे पास "उपयोगकर्ता" मॉडल और पंजीकरण फ़ॉर्म है। यहां प्रासंगिक भाग का एक स्निपेट है:

<% form_for(@user) do |f| %> 
    ... 
    <p> 
    <%= f.label :username %> 
    <%= f.text_field :username, :class => 'full_width' %> 
    </p> 
    ... 
<% end %> 

डॉट्स महत्वहीन कोड छुपाते हैं।

मैं, प्रलेखन समझ में अगर मैं अपने स्थान फ़ाइल में एक अनुवाद उपलब्ध कराने के रूप में, इस मामले में: dk, मेरे dk.yml इसलिए की तरह लग रही:

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

रेल लेबल पाठ का अनुवाद और डालूँ " blahblah "के बजाय" उपयोगकर्ता नाम "।

ऐसा नहीं हो रहा है, इसलिए मुझे कुछ याद करना होगा। किसी भी मदद की सराहना की।

उत्तर

26

मुझे लगता है कि मुझे यहां एक और समाधान मिला है।

मेरा ऐप संस्करण 2.3.5 था। अब मैं 2.3.8 करने के लिए इसे बदल दिया है और <%= f.label :username %> अब में अनुवाद का उपयोग करता है:

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

+0

क्या होगा यदि आप 'अपना पहला नाम दर्ज करें' जैसे लेबल रखना चाहते हैं? मुझे लगता है कि इस तरह के वाक्यांश में सेटिंग विशेषता महसूस नहीं है, शायद कुछ विशिष्ट मामलों में कुछ समस्याएं पैदा होंगी।फॉर्म लेबल को कस्टमाइज़ करने के सही तरीके के लिए वोल्डी का जवाब देखें। आप दोनों दृष्टिकोणों का एक साथ उपयोग भी कर सकते हैं, लेकिन वोल्डी का अपमान आपके फॉर्म पर इसे ओवरराइड कर देगा, और इसे – mizurnix

1

है ऐसा इसलिए है क्योंकि label विधि आप बुला रहे हैं ActionView::Helpers::FormHelper से एक नहीं है लेकिन वास्तव में ActionView::Helpers::FormTagHelper से label_tag तरीका है। form_for विधि प्रयुक्त फॉर्म हेल्पर्स में _tag जोड़कर दिए गए ब्लॉक में कोड को फिर से लिख रहा है। तो आप सही विधि के लिए प्रलेखन को नहीं देख रहे हैं!

मैंने अभी तक उस विधि का उपयोग नहीं किया है, क्योंकि कभी-कभी एक फ़ील्ड के लिए लेबल एक ही मॉडल का उपयोग करके कई रूपों से भिन्न हो सकता है, इसलिए मैंने अपना स्वयं का सहायक लिखा है।

+0

धन्यवाद, मुझे यह नहीं पता था। Form_for और लेबल विधियां 'एक्शन व्यू :: हेल्पर्स :: फॉर्महेल्पर' दस्तावेज़ पृष्ठ पर दोनों हैं, इसलिए मैंने अभी माना है कि उन्होंने इस तरह एक साथ काम किया है। मैंने अपना कोड बदल दिया है: '<% = लेबल: उपयोगकर्ता,: उपयोगकर्ता नाम%>' उसी yml फ़ाइल के साथ, लेकिन मुझे अभी भी अनुवाद नहीं मिलता है। क्या इससे कोई फर्क पड़ता है कि 'लेबल' कॉल 'form_for' ब्लॉक के भीतर है? – rhardih

+1

ईमानदार होने के लिए, मुझे उस सुविधा को काम करने के लिए कभी नहीं मिला है। उत्सुक होने के कारण, मैंने रेल कोड को देखा है और मुझे लगता है कि यह एक पुरानी विशेषता है और दस्तावेज को ठीक नहीं किया गया है: 'content = (text.blank?? Nil: text.to_s) || form_helper.rb –

+0

के लाइन 473 पर method_name.humanize' उस स्थिति में आपको अपनी '.yml' अनुवाद फ़ाइल में मौजूद 'स्कोप' निर्दिष्ट करने वाली 't' विधि का उपयोग करना चाहिए। '<% = टी: शीर्षक, दायरा: [: सहायक, लेबल:: पोस्ट]%>'। – mariowise

41

रेल 3.1 में एक छोटा सा है कि: मैं इस टिकट में संकेत मिला

dk: 
    activerecord: 
    attributes: 
     user: 
     username: 

बदला हुआ।

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

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

इसके लिए धन्यवाद देना चाहिए। क्या इस रिलीज के बारे में अधिक जानने के लिए कोई रिलीज नोट या कुछ है जिसे मैं देख सकता हूं? – astjohn

+1

इस प्रारूप का विवरण [एक्शन व्यू :: हेल्पर्स :: फॉर्महेल्पर.लेबल] (http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-label) दस्तावेज में उपलब्ध है। – simonnordberg

+1

मैं पुष्टि कर सकता हूं कि यह मेरे लिए रेल 4.0 में भी काम करता है। –

संबंधित मुद्दे

 संबंधित मुद्दे