मैं एक iPhone ऐप का अंतर्राष्ट्रीयकरण करने की प्रक्रिया में हूं - मुझे उपयोगकर्ता के वर्तमान स्थान के आधार पर कुछ विचारों के लिए प्रोग्रामेटिक बदलाव करने की आवश्यकता है। मैं पागल हो रहा हूँ, क्योंकि iPhone सिम्युलेटर या वास्तविक हार्डवेयर पर कोई भी भाषा वरीयता नहीं है, locale
हमेशा "en_US" का मूल्यांकन करता है:
NSString *locale = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
पागल बात यह है कि बाकी एप्लिकेशन उम्मीद के मुताबिक व्यवहार करते हैं। सही तार लोकलाइज़ेशन.स्ट्रिंग्स फ़ाइल से चुने जाते हैं और इंटरफ़ेस में उपयोग किए जाते हैं, और चयनित लोकेल के लिए सही .xib फ़ाइलों का उपयोग किया जाता है।
मैंने भी निम्नलिखित कोशिश की है, कोई फायदा नहीं हुआ और उसी परिणाम के साथ:
NSString *locale = [[NSLocale autoupdatingCurrentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
क्या कुछ सरल है जो मुझे याद आ रहा है? एक वरीयता या एक आयात शायद?
मैं क्या करता था:
जैसा कि डैरेन का उत्तर बताता है, मैं जिस वरीयता की तलाश कर रहा हूं वह इसमें नहीं है NSLocale
, बल्कि यह है:
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* preferredLanguage = [languages objectAtIndex:0];
NSLog(@"preferredLanguage: %@", preferredLang);
पीटर का जवाब एक बेहतर समाधान लगता है:
NSArray* preferredLanguages = [NSLocale preferredLanguages];
NSLog(@"preferredLanguages: %@", preferredLanguages);