2013-02-26 179 views
6

मैं सभी उपलब्ध स्थानीयकरणों की सूची कैसे प्राप्त करूं?xcode आईओएस सभी स्थानीयकरणों की एक सूची प्राप्त कर रहा है

मेरे पास पांच स्थानीयकरण के साथ एक ऐप है। मुझे यह जानने की ज़रूरत है कि वर्तमान लोकेल उस सूची में है या नहीं, तो फॉलबैक बनाएं। लेकिन मैं कैसे पता लगा सकता हूं कि वर्तमान लोकेल उस सूची में है या नहीं?

+0

[NSLocale currentLocale]; –

+0

फिर सभी स्थानीयकरण की सरणी के साथ तुलना करें –

+0

अच्छी तरह से - हालांकि मैं - लेकिन यह थोड़ा बोझिल है, है ना? क्या यह पता लगाने का कोई तरीका नहीं है कि सूची रखने के बजाय कौन सी भाषाओं को प्रोग्रामेटिक रूप से स्थानीयकृत किया गया है? – Swissdude

उत्तर

2

यह पता लगाने का सबसे आसान तरीका है कि वर्तमान लोकेल समर्थित है या नहीं, यह आपके द्वारा समर्थित सभी पांच स्थानीयकरणों के लिए एक विशेष "परीक्षण" स्ट्रिंग (कहें, @"IsSupported" = @"Yes") जोड़ना होगा। तब एक साधारण जांच से काम करेगा:

BOOL supported = [NSLocalizedString(@"IsSupported", nil) isEqualToString:@"Yes"]; 
+1

विकास भाषा में यह फॉलबैक नहीं होना चाहिए और यदि लोकेल परिभाषित नहीं किया गया है तो "हां" वापस आना चाहिए? –

7

मुझे स्वीकार किए जाते हैं समाधान काम नहीं किया के लिए, यदि भाषा समर्थित नहीं किया गया था - अनुप्रयोग बस वापस अंग्रेजी के लिए आते हैं और, अंग्रेजी तार फ़ाइल के रूप में निहित "IsSupported" स्ट्रिंग - यह लौटे " हाँ"।

मैं इस समाधान

का इस्तेमाल किया था
NSString* currentLanguage = [NSLocale preferredLanguages][0]; 
NSArray* supportedLocalizations = [[NSBundle mainBundle] localizations]; 

if ([supportedLocalizations containsObject:currentLanguage]) { 
    isLocalizedToCurrentLanguage = YES; 
} 
else { 
    isLocalizedToCurrentLanguage = NO; 
} 
+0

मुझे नहीं लगता कि यह काम करेगा - 'पसंदीदा भाषाएं' 'pt-BR', 'en-US' जैसे तार लौटाती हैं लेकिन स्थानीयकरण 'pt', 'en' जैसे स्ट्रिंग देता है। – Bill

+0

'[NSBundle mainBundle] पसंदीदा लोकेलाइजेशन]' '[NSLocale पसंदीदा भाषाएं] 'के बजाय पढ़ें। वह "एन", "सीएस", आदि वापस आ जाएगा ... –