2013-02-26 24 views
6

Tüm kullanılabilir yerelleştirmelerin bir listesini nasıl alabilirim?xcode iOS tüm yerelleştirmelerin listesini alma

Beş yerelleştirmeyle ilgili bir uygulamanız var. Mevcut yerel ayarın o listede olup olmadığını bilmem ve gerekirse bir geri dönüş oluşturmam gerekiyor. Ancak geçerli yerel ayarın bu listede olup olmadığını nasıl anlarım?

+0

[NSLocale currentLocale]; –

+0

O zaman tüm yerelleştirmeler dizisi ile karşılaştırın –

+0

iyi - Ben olsa - ama bu biraz hantal, değil mi? Bir listeyi tutmak yerine, hangi dillerin programlı olarak yerelleştirildiğini öğrenmenin bir yolu yok mu? – Swissdude

cevap

2

Geçerli yerel ayarın desteklenip desteklenmediğini öğrenmenin en kolay yolu, desteklediğiniz beş yerelleştirmeye özel bir "sınama" dizesi (örneğin, @"IsSupported" = @"Yes") eklemektir. Sonra basit bir çek çalışacaktır: Beni kabul çözüm işe yaramadı için Dil desteklenmez ise

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

Bu, geliştirme diline geri dönüş yapmamalı ve yerel ayar tanımlanmamışsa "Evet" dönmelidir? –

7

, - İngilizce dizeleri dosya içeriyordu "isSupported" dizesi olarak App basitçe, İngilizce'ye geri çekilip - iade " EVET".

bu çözüm

kullanmak zorunda
NSString* currentLanguage = [NSLocale preferredLanguages][0]; 
NSArray* supportedLocalizations = [[NSBundle mainBundle] localizations]; 

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

Bunun işe yaramayacağını düşünmüyorum - 'preferLanguages', 'pt-BR', 'en-US' gibi dizeleri döndürür, ancak yerelleştirmeler 'pt', 'en' gibi dizeleri döndürür. – Bill

+0

"[NSLocale preferredLanguages]" yerine [[[NSBundle mainBundle] tercih edilen Konumlar] işlevini okuyun. Bu "en", "cs" vb. –

İlgili konular