2012-11-08 7 views
5

मैं अपना पहला रेल ऐप बना रहा हूं और इसमें अंतर्राष्ट्रीयकरण समर्थन होगा।रेल में, लेबल के अलावा अन्य तत्वों के लिए स्थानीय डेटा व्यवस्थित करने के लिए कैसे?

मैंने पहले से ही i18n guide पढ़ा है, और यह एक बहुत अच्छा स्रोत है। यह भी suggests a file organization स्थानीयकरण फ़ाइलें है, जो एक बहुत अच्छी शुरुआत है के लिए:

|-defaults 
|---es.rb 
|---en.rb 
|-models 
|---book 
|-----es.rb 
|-----en.rb 
|-views 
|---defaults 
|-----es.rb 
|-----en.rb 
|---books 
|-----es.rb 
|-----en.rb 
|---users 
|-----es.rb 
|-----en.rb 
|---navigation 
|-----es.rb 
|-----en.rb 

हालांकि, मुझे यकीन है कि सबसे अच्छी जगह के लिए कुछ अतिरिक्त (अंतरराष्ट्रीयकरण) जानकारी आमतौर पर रूपों, जैसे में पाया धारण करने के लिए है कि क्या नहीं कर रहा हूँ:

  • इनपुट प्लेसहोल्डर
  • सहायक ग्रंथों (इनपुट के बगल में, इसके बारे में अधिक विस्तृत जानकारी के साथ)

बात है : यह जानकारी विचारों से संबंधित है (मॉडल के लिए नहीं)। लेकिन, इसे प्रति मॉडल आधार पर प्रति मॉडल में अक्सर वर्णित किया जाता है - जो मुझे सक्रिय्रेकॉर्ड संपत्ति के तहत मॉडल फ़ाइलों के अंदर रखने की इच्छा रखता है।

मेरा प्रश्न: इस स्थानीय डेटा को रखने के लिए सबसे अच्छी जगह क्या है? फ़ाइल संगठन (कौन सा फ़ोल्डर) और फ़ाइल के अंदर संगठन के संदर्भ में दोनों।

+0

आप किस रेल का उपयोग कर रहे हैं? I18n नेमस्पेसिंग रणनीति काफी समय से बदल गई है। – numbers1311407

+0

मैं 3.2.8 – fegemo

उत्तर

4

मुझे नहीं लगता कि इस प्रश्न का "सही" जवाब है।

व्यक्तिगत रूप से मैं मार्गदर्शिका द्वारा सुझाए गए संगठन के साथ कुछ हद तक असहमत हूं। i18n, प्रकृति द्वारा, पूरी तरह से दृश्य परत के डोमेन में है। वहां "दृश्य" फ़ोल्डर को छोड़ने के लिए थोड़ा उलझन में है, और शायद आपके पास अब तक की एक सटीक समस्या के लिए एक से अधिक डेवलपर का नेतृत्व किया है।

मैं views/book फ़ाइलों को फेंकने और उसी फ़ाइल में मॉडल से संबंधित सबकुछ को रखने का सुझाव दूंगा। सभी अनुवाद "विचार" के लिए हैं, और एक ही स्थान पर अलग-अलग मॉडल से संबंधित सभी अनुवादों को रखना संभवतः क्लीनर और कम त्रुटि-प्रवण है।

# locale/models/model.en (or es, etc) 

# all the activerecord translations 
activerecord: 
    models: 
    # ... 
    attributes: 
    # ... 
    errors: 
    # ... 
# then your form translations. 
helpers: 
    label: 
    # Here you might add overrides for activerecord attribute lookups, but 
    # do so with care (see note below). 

    # then below are your custom view fields 
    placeholders: 
    model: 
     attribute: 'translation' 
    details: 
    model: 
     attribute: 'translation' 

पर helpers.labelactiverecord.attributes बनाम एक नोट:

रेल ही currently लेबल अनुवाद के लिए दो स्थानों पर लग रहा है। पहली:

helpers: 
    label: 
    model: 
     attribute: 'translation' 

ActiveRecord अनुवाद करने के लिए वापस गिरने:

activerecord: 
    attributes: 
    model: 
     attribute: 'translation' 

के रूप में यह रूप लेबल और ActiveRecord त्रुटियों (और अन्य अनुवाद) इसका मतलब यह है, एक जाल के कुछ है अलग होगा। यह ठीक है, उदाहरण के लिए, आप चाहते हैं कि आपका फॉर्म लेबल एक प्रॉम्प्ट के अधिक हो (उदाहरण के लिए "बॉडी एंटर" बॉडी "के लिए)", लेकिन त्रुटियों का स्रोत भी हो सकता है यदि आपका helper.label स्पष्ट रूप से संदर्भित नहीं है activerecord अनुवाद, उदाहरण के लिए (विशेषता "बॉडी" के लिए "संदेश दर्ज करें")। तो देखभाल के साथ ओवरराइड करें।

+0

का उपयोग कर रहा हूं महान, भयानक चर्चा। अपने अनुभव साझा करने के लिए धन्यवाद! – fegemo

+0

जहां तक ​​मैं कह सकता हूं, आपका "वर्तमान" लिंक अब [यहां] इंगित करना चाहिए (https://github.com/rails/rails/blob/4-0-stable/actionpack/lib/action_view/helpers/tags/ लेबल।आरबी # एल 48) - लेकिन मुझे यकीन नहीं है कि यह कैसे दिखाता है कि यह Activerecord अनुवादों पर वापस आ जाता है। क्या आपको याद है कि उस श्रृंखला को कैसे अनुयायी किया जाता है? – Gareth