2012-08-29 8 views
9

मैं आर ऐल्स में भाषाओं के साथ काम कर रहा हूं, और मुझे आश्चर्य है कि एक शब्द को कैपिटल करते समय सबसे अच्छा अभ्यास क्या होता है।रेल में शब्दों को कैपिटल करने का सबसे अच्छा अभ्यास क्या है?

en.yml:

hello: "hello" 

application.html.erb:

<%= link_to t(:hello).capitalize, hello_path %> (with capitalization) 
<%= link_to t(:hello), hello_path %> (without capitalization) 

या

en.yml:

Hello: "Hello" 
hello: "hello" 

application.html.erb:

<%= link_to t(:Hello), hello_path %> (with capitalization) 
<%= link_to t(:hello), hello_path %> (without capitalization) 
+2

यह ध्यान देने योग्य है कि भाषा की सामग्री बहुत जटिल हो सकती है। यह एक बहुत ही सरल उदाहरण है। क्या आपके पास और यथार्थवादी उपयोग के मामले हैं? – tybro0103

उत्तर

21

दूसरा व्यक्ति सही होने का एक बेहतर मौका है। पूंजीकरण कब और जब लोकेल पर निर्भर नहीं किया जाता है तो आप नहीं जान सकते कि t(:hello).capitalize आसपास के संदर्भ को देखे बिना सही परिणाम देगा।

t(:hello_button) 

और फिर अपने अंग्रेजी YAML में:

hello_button: "Hello" 

इस तरह अनुवाद का उपयोग कर सकते जो भी मामला उचित है या तो की तुलना में एक बेहतर दृष्टिकोण प्रतीक में संदर्भ, कुछ इस तरह शामिल करने के लिए किया जाएगा प्रश्न में भाषा के लिए। साथ ही, कभी-कभी अंग्रेजी दो शब्दों के लिए एक ही शब्द का उपयोग करेगी जब अन्य भाषाएं अलग-अलग शब्दों का उपयोग करेंगी: नारंगी रंग और नारंगी फल पर विचार करें; इसलिए आपके अनुवाद में संदर्भ का महत्व।

इसके अलावा, capitalize केवल ASCII वर्ण पर काम करता है जब तक आप मिश्रण में एक mb_chars फेंक:

> 'µ'.capitalize 
=> "µ" 
> 'µ'.mb_chars.capitalize.to_s 
=> "Μ" 

आप शब्दों की शुरुआत में एक अग्रणी µ लेकिन सरल लहजे का सामना नहीं कर सकते हैं काफी आम है:

> 'éclair'.capitalize 
=> "éclair" 
> 'éclair'.mb_chars.capitalize.to_s 
=> "Éclair" 

यह केवल यह मानकर कि आप सभी भाषाओं को अंग्रेजी की तरह व्यवहार करते हैं, की कठिनाइयों की सतह खरोंच कर रहे हैं। बस pluralization rules से निपटना शुरू करने तक प्रतीक्षा करें।

एल 10 एन में मूल नियम उपयोगकर्ता के सामने वाले तारों को उस डेटा के अपारदर्शी ब्लब्स के रूप में पेश करना है जो आप किसी प्रकार के डेटाबेस से बाहर खींचते हैं और बिना किसी मैनिपुलेशन के उपयोगकर्ता को दिखाते हैं। हां, यह आपके कोड को और अधिक जटिल बनाता है लेकिन शुद्धता महत्वपूर्ण है।


जबकि मैं यहाँ हूँ, अलग-अलग शब्दों का अनुवाद करने का प्रयास एक समझ से बाहर गंदगी का उत्पादन करता है, आप बेहतर परिणाम यदि आप पूरे वाक्यों का अनुवाद होगा।

3

पहला। अंतर के रूप में पूंजीकरण के साथ अपने डेटा को डुप्लिकेट न करें, यह केवल इसे बनाए रखना कठिन बनाता है।

+6

क्षमा करें, मुझे उस पर आपसे असहमत होना है, पूंजीकरण संदर्भ पर निर्भर करता है। –

+0

निश्चित रूप से, मैं पहले का उपयोग करने की भी सोच रहा था। लेकिन प्रदर्शन को पूंजीकृत करने के लिए एक भाषा var या उपयोग विधि भेजने के लिए अधिक महंगा है? – Gabamnml

+1

@ गैबम्मल रनिंग 'हैलो'। कैपिटलिज़ 'मेरी मशीन पर 1,000,000 बार 820ms लेता है। प्रति पृष्ठ कुछ बार ऐसा करने का छोटा प्रदर्शन हिट रखरखाव ओवरहेड के लायक नहीं है। –

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

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