2012-06-27 13 views
6

मैं अपने .text.haml मेलर टेम्पलेट्स में i18n का उपयोग कर रहा हूं और मैं en.yml में एक स्ट्रिंग रखना चाहता हूं जिसमें एक नई लाइन है लेकिन टी() हमेशा उन्हें बच रहा है अगर मैं html_safe का उपयोग करता हूं या _html के साथ कुंजी नाम प्रत्यय करता हूं।रेल 3 i18n कैसे * नहीं * न्यूलाइन से बचें

क्या ऐसा करने का कोई तरीका है ??

p3_html: > 
    You love monkeys: 
    \n- You look like one 
    \n- Your smell like one 
    \n- Your account has been flagged 

मेरी html.haml टेम्पलेट में:

!= t('emails.post.twitter_forbidden.p3_html').html_safe 

कोई फर्क नहीं पड़ता \ N भाग निकले कर रहे हैं। मैं% br या कुछ और नहीं उपयोग कर सकता क्योंकि ये टेक्स्ट टेम्पलेट्स हैं। मुझे पता है कि मैं इसे 4 i18n तारों में विभाजित कर सकता हूं लेकिन यह वास्तव में दुखी होगा।

बीटीडब्ल्यू, मैंने जांच की और यह i18n भाग रहा है, हैमल नहीं।

उत्तर

8

आप कुछ इस तरह कर सकता है:

t('emails.post.twitter_forbidden.p3_html').html_safe.gsub("\n", '<br/>')

जहाँ तक मुझे पता है, यह एक ही रास्ता है।

संपादित

वास्तव में, कुछ खुदाई के बाद, मैं simple_format सहायक पाया।

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format

+1

मैं वास्तव में चाहते हैं \ N, मैं मैं बस \\ एन प्राप्त कर रहा हूँ। आपका जवाब अभी भी काम करेगा। – eagspoo

+0

आह, ठीक है। मैं क्षमा चाहता हूं - मुझे गलत समझा। मैं अपना उत्तर किसी भी अन्य लोगों के लिए छोड़ दूंगा जो इसे पा सकते हैं। –

+3

थोड़ा सुधार, यह 't ('email.post.twitter_forbidden.p3_html') होना चाहिए। Gsub (" \ n ", '
') .html_safe' –

0

I18n सिर्फ YAML उपयोग करता है और YAML सरणियों हो सकता है। :-)

तो मैं इस तरह के एक विकल्प का उपयोग करके पता लगाऊंगा।

अपने YAML फ़ाइल में आप एक कुंजी p3_html

# http://en.wikipedia.org/wiki/YAML#Lists_of_associative_arrays 
p3_html: 
- some text 
- some more text 
- some more more text 

बुलाया था और फिर अपने haml ध्यान में रखते हुए आप इस Haml कोड होगा:

= t('p3_html').each do |x| 
    %p= x 

या एक पंक्ति में अगर आप

= t('p3_html').each {|x| haml_tag :p, x } 

यह भी याद रखें कि यदि आप इसे एक सहायक में ले जाते हैं तो आपको शायद haml_conc का उपयोग करना होगा अपने रूबी चर के सामने सहायक पर। मैं निश्चित रूप से नहीं हूँ।

आपको अपने ऐप के नामकरण में अपने अनुवाद यमल वेरिएबल टी ('p3_html') के सापेक्ष/पूर्ण नामकरण को भी समायोजित करना होगा।

आशा है कि इससे मदद मिलती है!

3

यहां विकल्पों का जोड़ा: जैसा ऊपर बताया गया है, simple_format मदद करेगा। स्वरूप इतना की तरह अपने YML फ़ाइल:

p3_html: | 
     Some text: 
     - Point 1 
     - Point 2 
     - Point 3 

और फिर का उपयोग

=simple_format t(:p3_html) 

यह आपको

<p>Some text 
     <br> 
     - Point 1 
     <br> 
     - Point 2 
     <br> 
     - Point 3 
    </p> 

की तरह कुछ दे या फिर आप प्रत्येक पंक्ति एक नया पैरा चाहते हैं:

p3_html: | 
     Some text: 

     - Point 1 

     - Point 2 

     - Point 3 

जो तुम देना चाहिए इस:

<p>Some text</p> 
    <p>- Point 1</p> 
    <p>- Point 2</p> 
    <p>- Point 3</p> 

या कुछ इस तरह और अधिक लचीला

<% t(:p3_html).each_line do |line| %> 
     <li>= |line|</li> 
    <% end %> 

विभिन्न स्वरूपण में डालने के लिए आप को सक्षम करता है:

<li>- Point 1</li> 
    <li>- Point 2</li> 
    <li>- Point 3</li> 

अंतिम विकल्प एक सरणी का उपयोग करना है yaml में:

 p3_html: 
     - Some text: 
     - - Point 1 
     - - Point 2 
     - - Point 3 

    <% t(:p3_html).each do |line| %> 
     <p>= |line|</p> 
    <% end %> 

संभवतः क्लीनर, हालांकि मुझे लगता है कि यह कॉमा के साथ मजेदार नरक खेलेंगे, और उपर्युक्त संस्करण का लाभ यह है कि आप अपने yaml

0

को संशोधित करने के बिना प्रारूपों के बीच स्विच कर सकते हैं, बस इसे टेक्स्ट प्राप्त करने के लिए करें नई लाइन:

en.yml

long_text: | 
    Lorem ipsum dolor sit amet. 

    Consectetur adipisicing elit. 

एप्लिकेशन/विचारों/नमूना/file.html.erb

<%= simple_format t(:'long_text') %> 

देखें: http://apidock.com/rails/ActionView/Helpers/TextHelper/simple_format

0

मैं सिर्फ इस तरह स्थान फाइलों में टैग का उपयोग समाप्त हो गया है:

a: 
    b: "Some <br /> thing" 

और फिर खाके में मैं उन्हें बनाने के .html_safe:

<%= t('a.b').html_safe %> 
संबंधित मुद्दे