2012-12-16 30 views
7

तो मेरे ऐप में मैं वर्तमान में डिवाइस और इसके संक्षिप्त नाम को सेट करने की कोशिश कर रहा हूं। तो मैं इस कार्य करें:एनएसएलोकेल भाषा अंक

NSString *fullLanguage = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[[NSLocale preferredLanguages] objectAtIndex:0]]; 
NSString *abrlanguage = [[NSLocale preferredLanguages] objectAtIndex:0]; 

हालांकि कुछ उपयोगकर्ताओं की रिपोर्ट है कि भाषा की तरह कुछ लौटा रहा है: en_UK या कुछ इसी तरह, जो बारी में मेरे ऐप की कार्यक्षमता अप खिलवाड़ कर रहा है।

वैसे भी डिवाइस की मौजूदा सेट भाषा प्राप्त करने का कोई तरीका है चाहे डिवाइस क्षेत्रीय सेटिंग्स चाहे?

धन्यवाद!

+0

मुझे उम्मीद है कि इसके पीछे कोई अतिरिक्त क्षेत्रीय जानकारी के बिना "एन" कहें। –

उत्तर

22

भाषा कोड प्राप्त करने के लिए, का उपयोग करें:

NSString *languageName = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:languageCode]; 
NSLog(@"%@", languageName); // Prints "English" 

ध्यान दें कि आप क्षेत्र कोड (जिनमें से क्षेत्रीय विविधता के लिए प्रदान करता उपयोग कर रहे थे:

NSString *languageCode = [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]; 
NSLog(@"%@", languageCode); // Prints "en" 

भाषा का पूरा नाम प्राप्त करने के लिए भाषाओं), और इस तरह आसान हो गया हो सकता है:

NSString *regionCode = [[NSLocale currentLocale] objectForKey:NSLocaleIdentifier]; 
NSLog(@"%@", regionCode); // Prints "en_US" 

क्षेत्र कोड लैंग के साथ शुरू यूज कोड, अंडरस्कोर के बाद, और फिर क्षेत्रीय भिन्नता। (यह ऐप्पल के दस्तावेज प्रति मानकीकृत है।)

इसके अलावा, यदि आप currentLocale का उपयोग करते हैं, तो पता है कि यह अपडेट नहीं किया गया है क्योंकि उपयोगकर्ता प्राथमिकताएं बदली गई हैं। यदि आप बदलते हैं तो आप इसे सिंक में रखना चाहते हैं तो autoupdatingCurrentLocale का उपयोग करें।