2014-05-04 6 views
9

काम नहीं करता है हमारे पास Localization.string फ़ाइल में कुंजी-मूल्य जोड़ी है।आईओएस लोकलाइजेशन: यूनिकोड कैरेक्टर एस्केप अनुक्रम, जिसमें फॉर्म ' uxxxx' है,

"spanish-key" = "Espa\u00f1ol"; 

जब हम लेबल लाने और असाइन करते हैं तो ऐप इसे "Espau00f1ol" के रूप में प्रदर्शित करता है।

काम नहीं करता है।

self.label1.text= NSLocalizedString(@"spanish-key", nil); 

यह आवश्यक प्रारूप में शो works-।

self.label1.text= @"Espa\u00f1ol"; 

हम \ यू के बजाय \ यू सेट करते हैं यहाँ क्या समस्या हो सकती है जब हम

NSLocalizedString(@"spanish-key", nil)? 

उपयोग करते हैं, तो यह काम करता है।

"spanish-key" = "Espa\U00f1ol"; 

जब उपयोग करने के लिए "\ Uxxxx" और "\ uxxxx"?

उत्तर

26

NSString शाब्दिक और तार-फ़ाइलें अलग एस्केपिंग नियम का उपयोग करें।

\unnnn  - the character whose four-digit short identifier is nnnn 
\Unnnnnnnn - the character whose eight-digit short identifier is nnnnnnnn 

उदाहरण::

NSString *string = @"Espa\u00F1ol - \U0001F600"; // Español - 

NSString शाब्दिक रूप में "सामान्य" सी-तार एक ही भागने दृश्यों, "सार्वभौमिक चरित्र नाम" C99 मानक में परिभाषित का उपयोग विशेष रूप से में दूसरी तरफ स्ट्रिंग्स-फाइलें यूटीएफ -16 कैरेक्टर, और अक्षरों के लिए "यूटीएफ -16 सरोगेट जोड़े" को इंगित करने के लिए \Unnnn का उपयोग करें> यू + एफएफएफएफ:

"spanish-key" = "Espa\U00f1ol - \Ud83d\Ude00"; 

यह (उम्मीद) आपके प्रश्न के उत्तर (इसे "पुरानी शैली संपत्ति सूची", जो आप जब मुद्रण एक `NSDictionary। के विवरण देख सकते हैं में इस्तेमाल किया बचाव किया जाता है)

"\ Uxxxx" और "\ uxxxx" का उपयोग कब करें?

लेकिन: के रूप में भी अपने जवाब में @ gnasher729 द्वारा नोट, यूनिकोड का उपयोग करने के पर सभी दृश्यों से बचने की कोई जरूरत नहीं है। आप बस यूनिकोड वर्ण ही NSString शाब्दिक में और तार-फाइलों में दोनों सम्मिलित कर सकते हैं,:

NSString *string = @"Español - "; 

"spanish-key" = "Español - "; 
+0

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

+0

@ गौरावबोरोल: https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/Articles/StringsFiles.html में अनुशंसा की जाती है कि स्ट्रिंग फ़ाइलें यूटीएफ -16 एन्कोडिंग में सहेजी जाती हैं, जिसका अर्थ है कि आप बिना किसी बचने के अनुक्रम के सभी वर्णों का उपयोग कर सकते हैं, जैसे "स्पैनिश-कुंजी" = "Español -"; '। लेकिन यह पूरी तरह से आपकी पसंद है, दोनों विधियां काम करती हैं। –

+0

@ मार्टिनआर अच्छा स्पष्टीकरण, लेकिन समाधान क्या है जब स्थानीयकृत स्ट्रिंग में यूनिकोड चरित्र के लिए भागने का अनुक्रम होना चाहिए, चरित्र को टाइप करने के अलावा? – Manuel

2

बस स्थानीयकरण.स्ट्रिंग में उचित यूनिकोड में स्ट्रिंग लिखें।

"spanish-key" = "Español"; 
संबंधित मुद्दे